AWS Codebuild - Token Leakage
Github/Bitbucket कॉन्फ़िगर किए गए Tokens पुनः प्राप्त करें
सबसे पहले, जांचें कि क्या कोई स्रोत क्रेडेंशियल्स कॉन्फ़िगर किए गए हैं जिन्हें आप leak कर सकते हैं:
Docker Image के माध्यम से
यदि आपको पता चलता है कि उदाहरण के लिए Github के लिए प्रमाणीकरण खाते में सेट है, तो आप Codebuild को विशिष्ट docker image का उपयोग करके प्रोजेक्ट का निर्माण करने के लिए बनाकर उस पहुंच (GH token या OAuth token) को निकाल सकते हैं।
इस उद्देश्य के लिए आप नया Codebuild प्रोजेक्ट बना सकते हैं या किसी मौजूदा प्रोजेक्ट के पर्यावरण को बदल सकते हैं ताकि Docker image सेट कर सकें।
आप जो 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 पर भरोसा करने की अनुमति देगा।
अपनी खुद की Docker MitM image बनाएं और अपलोड करें
अपने प्रॉक्सी IP पते को सेट करने और अपने SSL cert को सेट करने के लिए repo के निर्देशों का पालन करें और docker image बनाएं।
http_proxy
सेट न करें ताकि मेटाडेटा एंडपॉइंट के अनुरोधों को इंटरसेप्ट न किया जा सके।आप
ngrok
का उपयोग कर सकते हैं जैसेngrok tcp 4444
अपने होस्ट पर प्रॉक्सी सेट करने के लिएएक बार जब आप Docker image बना लेते हैं, तो इसे एक सार्वजनिक repo (Dockerhub, ECR...) पर अपलोड करें
पर्यावरण सेट करें
एक नया Codebuild प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट के पर्यावरण को संशोधित करें।
प्रोजेक्ट को पहले से जनरेट किए गए Docker image का उपयोग करने के लिए सेट करें
अपने होस्ट में MitM प्रॉक्सी सेट करें
जैसा कि Github repo में संकेत दिया गया है, आप कुछ इस तरह का उपयोग कर सकते हैं:
mitmproxy संस्करण 9.0.1 का उपयोग किया गया था, यह बताया गया कि संस्करण 10 के साथ यह काम नहीं कर सकता है।
बिल्ड चलाएं और क्रेडेंशियल्स को कैप्चर करें
आप Authorization हेडर में टोकन देख सकते हैं:
यह aws cli से भी कुछ इस तरह किया जा सकता है
HTTP प्रोटोकॉल के माध्यम से
इस भेद्यता को AWS ने 20 फरवरी 2023 के सप्ताह में किसी समय ठीक कर दिया था (मुझे लगता है शुक्रवार को)। इसलिए अब एक हमलावर इसका दुरुपयोग नहीं कर सकता :)
एक हमलावर जिसके पास CodeBuild में उन्नत अनुमतियाँ हैं, वह Github/Bitbucket token को लीक कर सकता है जो कॉन्फ़िगर किया गया है या यदि अनुमतियाँ OAuth के माध्यम से कॉन्फ़िगर की गई थीं, तो कोड तक पहुँचने के लिए उपयोग किए गए अस्थायी OAuth token को लीक कर सकता है।
एक हमलावर CodeBuild प्रोजेक्ट में environment variables http_proxy और https_proxy को अपनी मशीन की ओर इंगित कर सकता है (उदाहरण के लिए
http://5.tcp.eu.ngrok.io:14972
)।
फिर, github repo के URL को HTTP का उपयोग करने के लिए बदलें, उदाहरण के लिए: **http://**github.com/carlospolop-forks/TestActions
फिर, https://github.com/synchronizing/mitm से बेसिक उदाहरण को उस पोर्ट पर चलाएं जो proxy variables (http_proxy और https_proxy) द्वारा इंगित किया गया है।
अंत में, प्रोजेक्ट को बिल्ड करें पर क्लिक करें, क्रेडेंशियल्स को स्पष्ट टेक्स्ट (base64) में mitm पोर्ट पर भेजा जाएगा:
अब एक हमलावर अपने मशीन से टोकन का उपयोग कर सकेगा, इसके सभी विशेषाधिकारों को सूचीबद्ध कर सकेगा और सीधे CodeBuild सेवा का उपयोग करने की तुलना में इसे (दुरुपयोग) करना आसान होगा।
Last updated