AWS Codebuild - Token Leakage
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
पहले, जांचें कि क्या कोई स्रोत क्रेडेंशियल्स कॉन्फ़िगर किए गए हैं जिन्हें आप लीक कर सकते हैं:
यदि आप पाते हैं कि उदाहरण के लिए Github के लिए प्रमाणीकरण खाते में सेट है, तो आप exfiltrate उस access (GH token या OAuth token) को कोडबिल्ड को एक विशिष्ट डॉकर इमेज का उपयोग करके प्रोजेक्ट के निर्माण को चलाने के लिए बना सकते हैं।
इसके लिए आप एक नया कोडबिल्ड प्रोजेक्ट बना सकते हैं या Docker image सेट करने के लिए मौजूदा एक का environment बदल सकते हैं।
आप जो Docker image उपयोग कर सकते हैं वह है https://github.com/carlospolop/docker-mitm। यह एक बहुत ही बुनियादी Docker image है जो env variables https_proxy
, http_proxy
और SSL_CERT_FILE
सेट करेगा। यह आपको https_proxy
और http_proxy
में निर्दिष्ट होस्ट के अधिकांश ट्रैफ़िक को इंटरसेप्ट करने की अनुमति देगा और SSL_CERT_FILE
में निर्दिष्ट SSL CERT पर भरोसा करेगा।
Create & Upload your own Docker MitM image
रिपॉजिटरी के निर्देशों का पालन करें ताकि आप अपने प्रॉक्सी IP पते को सेट कर सकें और अपने SSL cert को सेट कर सकें और docker image बनाएं।
DO NOT SET http_proxy
ताकि मेटाडेटा एंडपॉइंट के लिए अनुरोधों को इंटरसेप्ट न किया जा सके।
आप ngrok
का उपयोग कर सकते हैं जैसे ngrok tcp 4444
अपने होस्ट के लिए प्रॉक्सी सेट करने के लिए।
एक बार जब आपके पास Docker image बन जाए, तो इसे एक सार्वजनिक रिपॉजिटरी (Dockerhub, ECR...) में अपलोड करें।
Set the environment
एक नया कोडबिल्ड प्रोजेक्ट बनाएं या मौजूदा एक के वातावरण को संशोधित करें।
प्रोजेक्ट को पूर्व में उत्पन्न Docker image का उपयोग करने के लिए सेट करें।
Set the MitM proxy in your host
जैसा कि Github repo में संकेतित किया गया है, आप कुछ ऐसा उपयोग कर सकते हैं:
mitmproxy संस्करण 9.0.1 का उपयोग किया गया था, रिपोर्ट किया गया था कि संस्करण 10 के साथ यह काम नहीं कर सकता।
बिल्ड चलाएँ और क्रेडेंशियल्स कैप्चर करें
आप Authorization हेडर में टोकन देख सकते हैं:
यह aws cli से भी कुछ इस तरह किया जा सकता है
Codebuild प्रोजेक्ट्स में एक सेटिंग होती है जिसे insecureSsl
कहा जाता है, जो वेब में छिपी होती है, आप इसे केवल API से बदल सकते हैं।
इसे सक्षम करने से, Codebuild को प्लेटफ़ॉर्म द्वारा प्रदान किए गए प्रमाणपत्र की जांच किए बिना रिपॉजिटरी से कनेक्ट करने की अनुमति मिलती है।
सबसे पहले, आपको वर्तमान कॉन्फ़िगरेशन को कुछ इस तरह से सूचीबद्ध करने की आवश्यकता है:
फिर, एकत्रित जानकारी के साथ आप प्रोजेक्ट सेटिंग insecureSsl
को True
में अपडेट कर सकते हैं। निम्नलिखित मेरे प्रोजेक्ट को अपडेट करने का एक उदाहरण है, अंत में insecureSsl=True
पर ध्यान दें (यह एकमात्र चीज है जिसे आपको एकत्रित कॉन्फ़िगरेशन से बदलने की आवश्यकता है)।
इसके अलावा, env वेरिएबल http_proxy और https_proxy को भी जोड़ें जो आपके tcp ngrok की ओर इशारा करते हैं जैसे:
फिर, प्रॉक्सी वेरिएबल्स (http_proxy और https_proxy) द्वारा इंगित पोर्ट में https://github.com/synchronizing/mitm से बुनियादी उदाहरण चलाएँ
अंत में, Build the project पर क्लिक करें, credentials स्पष्ट पाठ (base64) में mitm पोर्ट पर भेजे जाएंगे:
इस भेद्यता को AWS ने 2023 के फरवरी के 20वें सप्ताह में किसी समय (मुझे लगता है शुक्रवार को) ठीक किया। इसलिए एक हमलावर इसका दुरुपयोग नहीं कर सकता :)
एक हमलावर के पास CodeBuild में उच्च अनुमतियाँ होने पर Github/Bitbucket टोकन लीक हो सकता है जो कॉन्फ़िगर किया गया है या यदि अनुमतियाँ OAuth के माध्यम से कॉन्फ़िगर की गई हैं, तो कोड तक पहुँचने के लिए उपयोग किया जाने वाला अस्थायी OAuth टोकन।
एक हमलावर http_proxy और https_proxy पर्यावरण चर को CodeBuild प्रोजेक्ट में जोड़ सकता है जो उसकी मशीन की ओर इशारा करता है (उदाहरण के लिए http://5.tcp.eu.ngrok.io:14972
)।
फिर, github repo का URL HTTP का उपयोग करने के लिए बदलें बजाय HTTPS के, उदाहरण के लिए: http://github.com/carlospolop-forks/TestActions
फिर, https://github.com/synchronizing/mitm से बुनियादी उदाहरण को प्रॉक्सी चर (http_proxy और https_proxy) द्वारा इंगित पोर्ट पर चलाएँ।
अंत में, प्रोजेक्ट बनाएं पर क्लिक करें, प्रमाणपत्र स्पष्ट पाठ (base64) में mitm पोर्ट पर भेजे जाएंगे:
अब एक हमलावर अपने मशीन से टोकन का उपयोग कर सकेगा, सभी विशेषाधिकारों की सूची बना सकेगा और (ab) सीधे CodeBuild सेवा का उपयोग करने की तुलना में इसे अधिक आसानी से उपयोग कर सकेगा।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)