
Exploit de lecture arbitraire de fichier non authentifié pour Jenkins CVE-2024-23897, avec prise en charge de HTTPS et de jeton CSRF pour contourner les instances durcies.
cve-2024-23897-crumb.py — lecture arbitraire de fichiers non authentifiée contre
Jenkins <= 2.441 / LTS <= 2.426.2 (corrigé dans 2.442 / LTS 2.426.3).
Les PoC largement utilisés — exploit-db 51993, xaitax/CVE-2024-23897, et le modèle nuclei de ProjectDiscovery — sont uniquement en HTTP et n'envoient aucun jeton CSRF. Contre une instance Jenkins qui est :
ils échouent avec 403 No valid crumb was included in the request, ce qui est
indistinguable d'une instance « corrigée » et produit un faux négatif.
Cette variante :
--http) ;JSESSIONID correspondant depuis la page
d'erreur /cli non authentifiée, puis les rejoue sur le canal duplex ;Effet net : elle détecte et exploite les instances durcies mais non corrigées que les outils publics signalent comme sûres.
python3 cve-2024-23897-crumb.py <hôte> [fichier] [--http] [--port N]
python3 cve-2024-23897-crumb.py jenkins.example.com
python3 cve-2024-23897-crumb.py jenkins.example.com /etc/shells
python3 cve-2024-23897-crumb.py 10.0.0.5 /etc/passwd --http --port 8080
Bibliothèque standard Python 3 uniquement. Lecture seule : envoie help "@<fichier>" ; rien
n'est écrit, téléversé ou exécuté.
help renvoie la ou les premières lignes d'un fichier — la première ligne dans le
message Too many arguments: plus les lignes suivantes dans le champ (default: ...).
Fonctionne bien sur les fichiers dont la première ligne contient plusieurs champs ou est longue :
/etc/passwd, /etc/shells/proc/net/arp, /proc/net/route (IP internes, passerelle, MAC)/proc/mounts (disposition conteneur/stockage)Les fichiers avec une première ligne très courte (par ex. /etc/hostname) passent par un
chemin d'erreur d'authentification et ne renvoient rien via help. L'extraction complète du
fichier utilise la commande connect-node à la place, mais cela nécessite que l'utilisateur
anonyme dispose de Overall/Read — souvent non accordé, auquel cas la primitive de lecture
fonctionne toujours mais seules les premières lignes sont renvoyées.
Pointez-le uniquement vers des hôtes que vous êtes autorisé à tester. Le même canal expose
des commandes CLI modifiant l'état (enable-job, reload-configuration, …) ; ce script
utilise délibérément uniquement le chemin en lecture seule help.