Jenkins

Discovery/Footprinting

Identificación de Jenkins en una red

nmap -p 8080 --script http-title <IP>
whatweb http://<IP>:8080

Descubrimiento de Endpoints Sensibles

curl -s -X GET http://<IP>:8080/api/json

Obtener información del servidor Jenkins en formato JSON.

curl -s -X GET http://<IP>:8080/securityRealm/user/admin

Enumeración de Usuarios

hydra -L users.txt -P passwords.txt <IP> http-post-form "/j_acegi_security_check:j_username=^USER^&j_password=^PASS^:F=Invalid"

Enumeración de Plugins Instalados

curl -s -X GET http://<IP>:8080/pluginManager/api/json?depth=1 | jq

Enumeración de Jobs y Builds

curl -s -X GET http://<IP>:8080/job/<JOB_NAME>/api/json

Obtener detalles de un job específico.

curl -s -X GET http://<IP>:8080/computer/api/json

Identificación de Configuraciones Débiles

curl -s -X GET http://<IP>:8080/config.xml

Verificar configuraciones globales de Jenkins.


Attacking Jenkins

Explotación de Jenkins Script Console

Si el endpoint /script está accesible, se puede ejecutar código arbitrario:

  • Objetivo: Ejecutar comandos en el servidor.

Ejecutar un revershell en Linux:

Ejecutar un revershell en Windows:

2. Explotación de Credenciales Expuestas

Si se puede acceder a credentials.xml:

  • Buscar credenciales almacenadas.

Si se obtiene un hash:

  • Intentar descifrar contraseñas.

3. RCE a través de Build Jobs

Si tienes permisos para crear/modificar un Job:

  1. Crear un nuevo Job en /newJob.

  2. Configurar el Build con un comando malicioso:

  • Linux:

  • Windows:

  1. Ejecutar el Job y capturar la shell en el atacante:

4. Explotación de Plugins Vulnerables

Buscar plugins vulnerables:

Si se detecta Script Security Plugin (antes de 1.50), se puede ejecutar código arbitrario desactivando sandbox.

5. Privilege Escalation & Lateral Movement

Si se obtiene acceso a Jenkins:

  • Objetivo: Identificar privilegios y posibles movimientos laterales.

Si Jenkins está en modo Master-Slave, intentar ejecutar comandos en los agentes:

6. Deserialización & Exploits Públicos

Algunas versiones de Jenkins son vulnerables a deserialización remota (CVE-2017-1000353):

  • Objetivo: Exploitar Jenkins usando un exploit de deserialización.

Last updated