
POC di Jenkins per la vulnerabilità di lettura arbitraria dei file tramite la CLI può portare a RCE
Jenkins dispone di un'interfaccia a riga di comando (CLI) integrata per accedere a Jenkins da uno script o da un ambiente shell.
Jenkins utilizza la libreria args4j per analizzare gli argomenti e le opzioni dei comandi sul controller Jenkins durante l'elaborazione dei comandi CLI. Questo parser di comandi ha una funzionalità che sostituisce un carattere @ seguito da un percorso di file in un argomento con il contenuto del file (expandAtFiles). Questa funzionalità è abilitata per impostazione predefinita e Jenkins 2.441 e versioni precedenti, LTS 2.426.2 e versioni precedenti non la disabilitano.
Ciò consente agli aggressori di leggere file arbitrari sul file system del controller Jenkins utilizzando la codifica dei caratteri predefinita del processo del controller Jenkins.
Gli aggressori con autorizzazione Overall/Read possono leggere file interi.
Gli aggressori senza autorizzazione Overall/Read possono leggere le prime righe dei file. Il numero di righe che possono essere lette dipende dai comandi CLI disponibili. Al momento della pubblicazione di questo avviso, il team di sicurezza Jenkins ha trovato modi per leggere le prime tre righe dei file nelle release recenti di Jenkins senza avere plugin installati e non ha identificato alcun plugin che possa aumentare questo numero di righe.
Descrizione della correzione: Jenkins 2.442, LTS 2.426.3 disabilita la funzionalità del parser di comandi che sostituisce un carattere @ seguito da un percorso di file in un argomento con il contenuto del file per i comandi CLI.
In caso di problemi con questa correzione, disabilitare questa modifica impostando la proprietà di sistema Java hudson.cli.CLICommand.allowAtSyntax su true. Questa operazione è fortemente sconsigliata su qualsiasi rete accessibile da utenti che non siano amministratori Jenkins.
Soluzione alternativa: Disabilitare l'accesso alla CLI dovrebbe prevenire completamente lo sfruttamento. Questa operazione è fortemente raccomandata agli amministratori che non possono aggiornare immediatamente a Jenkins 2.442, LTS 2.426.3. L'applicazione di questa soluzione alternativa non richiede il riavvio di Jenkins
Maggiori informazioni su: https://www.jenkins.io/security/advisory/2024-01-24/#SECURITY-3314
Comando da eseguire: python CVE-2024-23897 Jenkins.py -l list.txt -f /etc/passwd
La risposta di output VULN potrebbe contenere più di daemon o bin, aggiungi alla riga 28 se desideri aggiungerne altri.