Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In questo post del blog è possibile trovare un ottimo modo per trasformare una vulnerabilità di Local File Inclusion in Jenkins in RCE: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Questo è un riassunto creato dall'AI della parte del post in cui l'artefatto di un cookie arbitrario viene abusato per ottenere RCE abusando di una lettura di file locale fino a quando non ho tempo per creare un riassunto da solo:
Requisito di funzionalità: "Ricordami" deve essere abilitato (impostazione predefinita).
Livelli di accesso: L'attaccante ha bisogno di permessi Generali/Di lettura.
Accesso segreto: Capacità di leggere sia contenuti binari che testuali da file chiave.
Recupero delle informazioni utente
Accedere alla configurazione utente e ai segreti da $JENKINS_HOME/users/*.xml
per ciascun utente per raccogliere:
Nome utente
Seed utente
Timestamp
Hash della password
Estrazione della chiave segreta
Estrarre le chiavi crittografiche utilizzate per firmare il cookie:
Chiave segreta: $JENKINS_HOME/secret.key
Chiave master: $JENKINS_HOME/secrets/master.key
File chiave MAC: $JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Preparazione del token
Calcolare il tempo di scadenza del token:
Concatenare i dati per il token:
Decrittazione della chiave MAC
Decrittare il file chiave MAC:
Calcolo della firma
Calcolare HMAC SHA256:
Codifica del cookie
Generare il cookie finale:
Autenticazione della sessione
Recuperare i token CSRF e di sessione:
Effettuare una richiesta a /crumbIssuer/api/json
per ottenere Jenkins-Crumb
.
Catturare JSESSIONID
dalla risposta, che sarà utilizzato insieme al cookie "remember-me".
Richiesta di esecuzione del comando
Inviare una richiesta POST con uno script Groovy:
Lo script Groovy può essere utilizzato per eseguire comandi a livello di sistema o altre operazioni all'interno dell'ambiente Jenkins.
L'esempio di comando curl fornito dimostra come effettuare una richiesta a Jenkins con le intestazioni e i cookie necessari per eseguire codice arbitrario in modo sicuro.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)