AWS Codebuild - Token Leakage
Recupera i Token Configurati per Github/Bitbucket
Prima di tutto, controlla se ci sono credenziali di origine configurate che potresti perdere:
Attraverso l'immagine Docker
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 già esistente per impostare l'immagine Docker.
L'immagine Docker che potresti utilizzare è https://github.com/carlospolop/docker-mitm. Si tratta di 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 CERT SSL indicato in SSL_CERT_FILE
.
Crea e Carica la tua immagine Docker MitM
Segui le istruzioni del repository per impostare il tuo indirizzo IP proxy e impostare il tuo certificato SSL e crea l'immagine Docker.
NON IMPOSTARE
http_proxy
per non intercettare le richieste all'endpoint dei metadati.Potresti utilizzare
ngrok
comengrok tcp 4444
per impostare il proxy sul tuo host.Una volta che hai creato l'immagine Docker, caricala in un repository pubblico (Dockerhub, ECR...)
Imposta l'ambiente
Crea un nuovo progetto Codebuild o modifica l'ambiente di uno già esistente.
Imposta il progetto per utilizzare l'immagine Docker generata in precedenza
Imposta il proxy MitM sul tuo host
Come indicato nel repository di Github, potresti utilizzare qualcosa del genere:
La versione di mitmproxy utilizzata era la 9.0.1, è stato segnalato che con la versione 10 potrebbe non funzionare.
Esegui la build e cattura le credenziali
Puoi vedere il token nell'intestazione Authorization:
Questo potrebbe essere fatto anche da aws cli con qualcosa del genere
Attraverso il protocollo HTTP
Questa vulnerabilità è stata corretta da AWS in qualche momento della settimana del 20 febbraio 2023 (credo il venerdì). Quindi un attaccante non può più abusarne :)
Un attaccante con permessi elevati su un CodeBuild potrebbe rivelare il token Github/Bitbucket configurato o se i permessi fossero 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
).
Successivamente, modificare l'URL del repository github per utilizzare HTTP invece di HTTPS, ad esempio: **http://**github.com/carlospolop-forks/TestActions
Infine, eseguire l'esempio di base da https://github.com/synchronizing/mitm sulla porta indicata dalle variabili di proxy (http_proxy e https_proxy)
Infine, fai clic su Build the project, le credenziali saranno inviate in testo normale (base64) alla porta mitm:
Ora un attaccante sarà in grado di utilizzare il token dal suo computer, elencare tutti i privilegi che ha e (ab)usare più facilmente rispetto all'utilizzo diretto del servizio CodeBuild.
Last updated