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) को कोडबिल्ड को एक विशिष्ट डॉकर इमेज का उपयोग करके प्रोजेक्ट के निर्माण को चलाने के लिए बना सकते हैं।
इसके लिए आप एक नया कोडबिल्ड प्रोजेक्ट बना सकते हैं या मौजूदा एक का वातावरण बदल सकते हैं ताकि डॉकर इमेज सेट की जा सके।
आप जो डॉकर इमेज उपयोग कर सकते हैं वह है https://github.com/carlospolop/docker-mitm। यह एक बहुत बुनियादी डॉकर इमेज है जो env variables https_proxy
, http_proxy
और SSL_CERT_FILE
सेट करेगी। यह आपको https_proxy
और http_proxy
में निर्दिष्ट होस्ट के अधिकांश ट्रैफ़िक को इंटरसेप्ट करने की अनुमति देगा और SSL_CERT_FILE
में निर्दिष्ट SSL CERT पर भरोसा करेगा।
अपना खुद का डॉकर MitM इमेज बनाएं और अपलोड करें
अपने प्रॉक्सी IP पते को सेट करने और अपने SSL प्रमाणपत्र को सेट करने के लिए रेपो के निर्देशों का पालन करें और डॉकर इमेज बनाएं।
http_proxy
सेट न करें ताकि मेटाडेटा एंडपॉइंट के लिए अनुरोधों को इंटरसेप्ट न किया जा सके।
आप ngrok
का उपयोग कर सकते हैं जैसे ngrok tcp 4444
अपने होस्ट के लिए प्रॉक्सी सेट करने के लिए।
एक बार जब आपके पास डॉकर इमेज बन जाए, तो इसे एक सार्वजनिक रेपो (Dockerhub, ECR...) में अपलोड करें।
पर्यावरण सेट करें
एक नया कोडबिल्ड प्रोजेक्ट बनाएं या मौजूदा एक का वातावरण संशोधित करें।
प्रोजेक्ट को पूर्व में उत्पन्न डॉकर इमेज का उपयोग करने के लिए सेट करें।
अपने होस्ट में MitM प्रॉक्सी सेट करें
जैसा कि Github रेपो में संकेतित है, आप कुछ ऐसा उपयोग कर सकते हैं:
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 रिपॉजिटरी का URL HTTP का उपयोग करने के लिए बदलें, HTTPS के बजाय, उदाहरण के लिए: http://github.com/carlospolop-forks/TestActions
फिर, प्रॉक्सी चर (http_proxy और https_proxy) द्वारा इंगित पोर्ट में https://github.com/synchronizing/mitm से बुनियादी उदाहरण चलाएँ।
अंत में, प्रोजेक्ट बनाएं पर क्लिक करें, क्रेडेंशियल्स स्पष्ट पाठ (base64) में mitm पोर्ट पर भेजे जाएंगे:
अब एक हमलावर अपने मशीन से टोकन का उपयोग कर सकेगा, सभी विशेषाधिकारों की सूची बना सकेगा और (ab) सीधे CodeBuild सेवा का उपयोग करने की तुलना में इसे अधिक आसानी से उपयोग कर सकेगा।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)