AWS Codebuild - Token Leakage
Recupera i Token Configurati di Github/Bitbucket
Per prima cosa, verifica se ci sono credenziali di origine configurate che potresti leak:
Via Docker Image
Se scopri che l'autenticazione, ad esempio a 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 tal fine, 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 repository per impostare l'indirizzo IP del tuo proxy e impostare il tuo certificato SSL e costruisci l'immagine docker.
NON IMPOSTARE
http_proxy
per non intercettare le richieste all'endpoint dei metadati.Potresti usare
ngrok
comengrok tcp 4444
per impostare il proxy sul tuo host.Una volta costruita l'immagine Docker, caricala su un repository 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 sul tuo host
Come indicato nel repository Github potresti usare qualcosa come:
La versione di mitmproxy utilizzata era la 9.0.1, è stato riportato che con la versione 10 questo potrebbe non funzionare.
Esegui la build e cattura le credenziali
Puoi vedere il token nell'header Authorization:
Questo potrebbe essere fatto anche dal aws cli con qualcosa come
Via HTTP protocol
Questa vulnerabilità è stata corretta da AWS durante la settimana del 20 febbraio 2023 (penso venerdì). Quindi un attaccante non può più abusarne :)
Un attaccante con permessi elevati su un CodeBuild potrebbe leakare 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 (per esempio
http://5.tcp.eu.ngrok.io:14972
).
Poi, cambiare l'URL del repository github per usare HTTP invece di HTTPS, per 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'uso diretto del servizio CodeBuild.
Last updated