🔎Jenkins - Enumeración
Última actualización
Última actualización
Jenkins es un servidor de automatización de código abierto escrito en Java que ayuda a los desarrolladores a crear y probar sus proyectos de software de forma continua. Es un sistema basado en servidor que se ejecuta en contenedores de servlets como Tomcat. A lo largo de los años, los investigadores han descubierto varias vulnerabilidades en Jenkins, incluidas algunas que permiten la ejecución remota de código sin necesidad de autenticación. Jenkins es un servidor de integración continua . A continuación, se muestran algunos puntos interesantes sobre Jenkins:
Jenkins se llamó originalmente Hudson (lanzado en 2005) y fue renombrado en 2011 después de una disputa con Oracle.
Los datos muestran que más de 86.000 empresas utilizan Jenkins
Jenkins es utilizado por empresas conocidas como Facebook, Netflix, Udemy, Robinhood y LinkedIn.
Tiene más de 300 complementos para respaldar proyectos de creación y prueba.
Supongamos que estamos trabajando en una prueba de penetración interna y hemos completado nuestros análisis de detección web. Observamos lo que creemos que es una instancia de Jenkins y sabemos que suele estar instalada en servidores Windows que se ejecutan como la poderosa cuenta SYSTEM. Si podemos obtener acceso a través de Jenkins y obtener ejecución remota de código como la cuenta SYSTEM, tendríamos un punto de apoyo en Active Directory para comenzar la enumeración del entorno del dominio.
Jenkins se ejecuta en el puerto 8080 de Tomcat de forma predeterminada. También utiliza el puerto 5000 para conectar servidores esclavos. Este puerto se utiliza para la comunicación entre servidores maestros y esclavos. Jenkins puede utilizar una base de datos local, LDAP, una base de datos de usuarios de Unix, delegar la seguridad a un contenedor de servlets o no utilizar ninguna autenticación. Los administradores también pueden permitir o prohibir que los usuarios creen cuentas.
La instalación predeterminada generalmente utiliza la base de datos de Jenkins para almacenar credenciales y no permite que los usuarios registren una cuenta. Podemos identificar rápidamente a Jenkins mediante la página de inicio de sesión.
Es posible que nos encontremos con una instancia de Jenkins que utilice credenciales débiles o predeterminadas, como por ejemplo admin:admin
, o que no tenga habilitado ningún tipo de autenticación. No es raro encontrar instancias de Jenkins que no requieran ninguna autenticación durante una prueba de penetración interna. Si bien es poco frecuente, nos hemos encontrado con Jenkins durante pruebas de penetración externas que pudimos atacar.
Inicia sesión en la instancia de Jenkins en http://jenkins.inlanefreight.local:8000. Navega por la instancia y envía el número de versión.
Probamos con las credenciales por defecto: admin:admin
y conseguimos acceder sin problema:
En la parte inferior de la página podemos observar que está explícita la versión: 2.303.1
También podemos obtener la versión con curl: