
POC - Jenkins File Read Vulnerability - CVE-2024-23897
CVE-2024-23897 est une vulnérabilité critique dans Jenkins qui permet à des attaquants non authentifiés de lire des fichiers arbitraires sur le système de fichiers du contrôleur Jenkins. Ce défaut provient d'une gestion incorrecte des arguments de commande dans la bibliothèque args4j, en particulier dans les opérations en ligne de commande où un caractère @ suivi d'un chemin de fichier peut conduire à une exposition non autorisée du contenu du fichier.
Cette vulnérabilité présente un risque important car elle peut permettre aux attaquants d'accéder à des informations sensibles, telles que des clés cryptographiques et des fichiers de configuration, qui peuvent être exploitées pour une compromission ultérieure, y compris l'exécution de code à distance (RCE). Le problème est particulièrement alarmant étant donné l'utilisation répandue de Jenkins dans les pipelines CI/CD et le nombre d'instances Jenkins exposées dans le monde.
Un correctif de sécurité traitant cette vulnérabilité a été publié dans les versions Jenkins 2.442 et ultérieures, ainsi que Jenkins LTS version 2.426.3 et ultérieures. Les utilisateurs sont vivement encouragés à mettre à niveau leurs installations Jenkins pour atténuer ce risque et protéger les informations sensibles.
En savoir plus — CVE-2024-23897
Avertissement : Cette preuve de concept (POC) est faite à des fins éducatives et de tests éthiques uniquement. L'utilisation de cet outil pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, étatiques et fédérales applicables. Les développeurs n'assument aucune responsabilité et ne sont pas responsables de toute utilisation abusive ou de tout dommage causé par ce programme.
Pour trouver des cibles potentielles, utilisez Fofa (similaire à Shodan.io) :
Les versions Jenkins concernées incluent jusqu'à la 2.441 et jusqu'à la 2.426.2 pour Jenkins LTS.
Clonez le dépôt :
git clone https://github.com/verylazytech/CVE-2024-23897
Exécutez l'exploit :
python3 CVE-2024-23897.py -u <Victim_ip:port>

Entrez le fichier que vous souhaitez lire dans le shell (dans ce cas /etc/passwd) :

Quelques fichiers pouvant être intéressants :
/proc/self/environ Variables d'environnement incluant JENKINS_HOME/proc/self/cmdline Arguments de la ligne de commande/var/jenkins_home/users/users.xml Emplacements de stockage des comptes utilisateurs/var/jenkins_home/users/<user_directory>/config.xml Hash du mot de passe utilisateur BCrypt/var/jenkins_home/secrets/master.key Clé secrète de chiffrement/etc/hosts Résolution DNS locale Linux/etc/passwd Comptes utilisateurs 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