
PoC - Vulnerabilidad de lectura de archivos de Jenkins - CVE-2024-23897
CVE-2024-23897 es una vulnerabilidad crítica en Jenkins que permite a atacantes no autenticados leer archivos arbitrarios en el sistema de archivos del controlador de Jenkins. Este fallo surge de un manejo inadecuado de los argumentos de comando en la biblioteca args4j, específicamente en operaciones de línea de comandos donde un carácter @ seguido de una ruta de archivo puede conducir a la exposición no autorizada del contenido del archivo.
Esta vulnerabilidad representa un riesgo significativo, ya que puede permitir a los atacantes acceder a información sensible, como claves criptográficas y archivos de configuración, que podrían ser aprovechados para una mayor explotación, incluyendo la ejecución remota de código (RCE). El problema es particularmente alarmante dado el uso generalizado de Jenkins en pipelines CI/CD y la cantidad de instancias de Jenkins expuestas a nivel mundial.
Se ha publicado un parche de seguridad que soluciona esta vulnerabilidad en las versiones de Jenkins 2.442 y posteriores, así como en la versión LTS 2.426.3 y posteriores. Se recomienda encarecidamente a los usuarios actualizar sus instalaciones de Jenkins para mitigar este riesgo y proteger la información sensible.
Lea más acerca de ello — CVE-2024-23897
Descargo de responsabilidad: Esta Prueba de Concepto (POC) ha sido creada únicamente con fines educativos y de pruebas éticas. El uso de esta herramienta para atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no se hacen responsables por el uso indebido o los daños causados por este programa.
Para encontrar posibles objetivos, utilice Fofa (similar a Shodan.io):
Las versiones afectadas de Jenkins incluyen hasta la 2.441 y hasta la 2.426.2 para Jenkins LTS.
Clone el repositorio:
git clone https://github.com/verylazytech/CVE-2024-23897
Ejecutar el Exploit:
python3 CVE-2024-23897.py -u <Victim_ip:port>

Ingrese el archivo que desea leer en la shell (en este caso /etc/passwd):

Algunos archivos que podrían ser de interés:
/proc/self/environ Variables de entorno incluyendo JENKINS_HOME/proc/self/cmdline Argumentos de línea de comandos/var/jenkins_home/users/users.xml Ubicaciones de almacenamiento de cuentas de usuario/var/jenkins_home/users/<user_directory>/config.xml Hash de contraseña BCrypt del usuario/var/jenkins_home/secrets/master.key Clave secreta de cifrado/etc/hosts Resolución local de DNS en Linux/etc/passwd Cuentas de usuario de Linuxusage: python3 CVE-2024-23897.py [-h] -u URL [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v]
options:
-h, --help show this help message and exit
-u URL, --url URL Jenkins URL
-f FILE, --file FILE File path to read
-t TIMEOUT, --timeout TIMEOUT
Request timeout
-s, --save Save file contents
-o, --overwrite Overwrite existing files
-p PROXY, --proxy PROXY
HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
-v, --verbose Verbosity enabled - additional output flag