AWS Codebuild - Token Leakage
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)
Prima di tutto, controlla se ci sono credenziali sorgente configurate che potresti leak:
Se scopri che l'autenticazione, ad esempio su Github, è impostata nell'account, puoi esfiltrare quell'accesso (token GH o token OAuth) facendo in modo che Codebuild utilizzi un'immagine docker specifica per eseguire la build del progetto.
A questo scopo, potresti creare un nuovo progetto Codebuild o modificare l'ambiente di uno esistente per impostare l'immagine Docker.
L'immagine Docker che potresti utilizzare è https://github.com/carlospolop/docker-mitm. Questa è un'immagine Docker molto basilare che imposterà le variabili d'ambiente https_proxy
, http_proxy
e SSL_CERT_FILE
. Questo ti permetterà di intercettare la maggior parte del traffico dell'host indicato in https_proxy
e http_proxy
e di fidarti del certificato SSL indicato in SSL_CERT_FILE
.
Crea e carica la tua immagine Docker MitM
Segui le istruzioni del repo per impostare il tuo indirizzo IP proxy e impostare il tuo certificato SSL e costruire l'immagine docker.
NON IMPOSTARE http_proxy
per non intercettare le richieste all'endpoint dei metadati.
Potresti usare ngrok
come ngrok tcp 4444
per impostare il proxy sul tuo host.
Una volta che hai costruito l'immagine Docker, caricala su un repo pubblico (Dockerhub, ECR...)
Imposta l'ambiente
Crea un nuovo progetto Codebuild o modifica l'ambiente di uno esistente.
Imposta il progetto per utilizzare l'immagine Docker precedentemente generata.
Imposta il proxy MitM nel tuo host
Come indicato nel repo Github, potresti usare qualcosa come:
La versione di mitmproxy utilizzata era la 9.0.1, è stato segnalato che con la versione 10 questo potrebbe non funzionare.
Esegui la build e cattura le credenziali
Puoi vedere il token nell'intestazione Authorization:
Questo potrebbe essere fatto anche dalla aws cli con qualcosa come
I progetti Codebuild hanno un'impostazione chiamata insecureSsl
che è nascosta nel web e puoi cambiarla solo dall'API.
Abilitando questo, consente a Codebuild di connettersi al repository senza controllare il certificato offerto dalla piattaforma.
Prima devi enumerare la configurazione attuale con qualcosa come:
Poi, con le informazioni raccolte, puoi aggiornare le impostazioni del progetto insecureSsl
a True
. Di seguito è riportato un esempio del mio aggiornamento di un progetto, nota il insecureSsl=True
alla fine (questo è l'unica cosa che devi cambiare dalla configurazione raccolta).
Inoltre, aggiungi anche le variabili d'ambiente http_proxy e https_proxy che puntano al tuo tcp ngrok come:
Quindi, esegui l'esempio di base da https://github.com/synchronizing/mitm nella porta indicata dalle variabili proxy (http_proxy e https_proxy)
Infine, clicca su Build the project, le credenziali saranno inviate in chiaro (base64) alla porta mitm:
Questa vulnerabilità è stata corretta da AWS in qualche momento della settimana del 20 febbraio 2023 (penso venerdì). Quindi un attaccante non può più abusarne :)
Un attaccante con permessi elevati su un CodeBuild potrebbe esporre il token Github/Bitbucket configurato o se i permessi sono stati configurati tramite OAuth, il token OAuth temporaneo utilizzato per accedere al codice.
Un attaccante potrebbe aggiungere le variabili d'ambiente http_proxy e https_proxy al progetto CodeBuild puntando alla sua macchina (ad esempio http://5.tcp.eu.ngrok.io:14972
).
Poi, cambiare l'URL del repository github per utilizzare HTTP invece di HTTPS, ad esempio: http://github.com/carlospolop-forks/TestActions
Poi, eseguire l'esempio base da https://github.com/synchronizing/mitm nella porta indicata dalle variabili proxy (http_proxy e https_proxy)
Infine, clicca su Build the project, le credenziali saranno inviate in chiaro (base64) alla porta mitm:
Ora un attaccante sarà in grado di utilizzare il token dalla sua macchina, elencare tutti i privilegi che ha e (ab)usare più facilmente rispetto all'utilizzo diretto del servizio CodeBuild.
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)