AWS Codebuild - Token Leakage
Récupérer les jetons configurés Github/Bitbucket
Tout d'abord, vérifiez s'il y a des informations d'identification source configurées que vous pourriez leak :
Via Docker Image
Si vous constatez que l'authentification à, par exemple, Github est configurée dans le compte, vous pouvez exfiltrer cet accès (GH token ou OAuth token) en faisant en sorte que Codebuild utilise une image docker spécifique pour exécuter la construction du projet.
À cette fin, vous pouvez créer un nouveau projet Codebuild ou modifier l'environnement d'un projet existant pour définir l'image Docker.
L'image Docker que vous pouvez utiliser est https://github.com/carlospolop/docker-mitm. Il s'agit d'une image Docker très basique qui définira les variables d'environnement https_proxy
, http_proxy
et SSL_CERT_FILE
. Cela vous permettra d'intercepter la plupart du trafic de l'hôte indiqué dans https_proxy
et http_proxy
et de faire confiance au certificat SSL indiqué dans SSL_CERT_FILE
.
Créer et télécharger votre propre image Docker MitM
Suivez les instructions du dépôt pour définir l'adresse IP de votre proxy et définir votre certificat SSL et construire l'image docker.
NE PAS DÉFINIR
http_proxy
pour ne pas intercepter les requêtes vers le point de terminaison des métadonnées.Vous pouvez utiliser
ngrok
commengrok tcp 4444
pour définir le proxy vers votre hôte.Une fois l'image Docker construite, téléchargez-la dans un dépôt public (Dockerhub, ECR...)
Définir l'environnement
Créez un nouveau projet Codebuild ou modifiez l'environnement d'un projet existant.
Configurez le projet pour utiliser l'image Docker générée précédemment.
Configurer le proxy MitM sur votre hôte
Comme indiqué dans le dépôt Github, vous pouvez utiliser quelque chose comme :
La version de mitmproxy utilisée était 9.0.1, il a été rapporté qu'avec la version 10 cela pourrait ne pas fonctionner.
Exécutez la build et capturez les identifiants
Vous pouvez voir le token dans l'en-tête Authorization :
Cela pourrait également être fait depuis l'aws cli avec quelque chose comme
Via HTTP protocol
Cette vulnérabilité a été corrigée par AWS à un moment donné la semaine du 20 février 2023 (je pense le vendredi). Donc un attaquant ne peut plus en abuser :)
Un attaquant avec des permissions élevées sur un CodeBuild pourrait leak le token Github/Bitbucket configuré ou si les permissions étaient configurées via OAuth, le token OAuth temporaire utilisé pour accéder au code.
Un attaquant pourrait ajouter les variables d'environnement http_proxy et https_proxy au projet CodeBuild pointant vers sa machine (par exemple
http://5.tcp.eu.ngrok.io:14972
).
Ensuite, changer l'URL du dépôt github pour utiliser HTTP au lieu de HTTPS, par exemple : **http://**github.com/carlospolop-forks/TestActions
Ensuite, exécuter l'exemple de base de https://github.com/synchronizing/mitm sur le port pointé par les variables proxy (http_proxy et https_proxy)
Enfin, cliquez sur Build the project, les credentials seront envoyées en clair (base64) au port mitm :
Maintenant, un attaquant pourra utiliser le token depuis sa machine, lister tous les privilèges qu'il possède et en (ab)user plus facilement qu'en utilisant directement le service CodeBuild.
Last updated