AWS Codebuild - Token Leakage
Github/Bitbucket कॉन्फ़िगर किए गए टोकन्स की पुनः प्राप्ति
सबसे पहले, जांचें कि क्या कोई सोर्स क्रेडेंशियल्स कॉन्फ़िगर किए गए हैं जिन्हें आप लीक कर सकते हैं:
डॉकर इमेज के माध्यम से
यदि आप पाते हैं कि उदाहरण के लिए Github के लिए प्रमाणीकरण खाते में सेट है, तो आप access (GH token या OAuth token) को exfiltrate कर सकते हैं जिससे Codebuild को विशेष डॉकर इमेज का उपयोग करके प्रोजेक्ट का निर्माण चलाने के लिए बनाया जा सकता है।
इस उद्देश्य के लिए आप एक नया Codebuild प्रोजेक्ट create कर सकते हैं या मौजूदा के environment को बदलकर Docker image सेट कर सकते हैं।
आप जिस Docker इमेज का उपयोग कर सकते हैं वह है https://github.com/carlospolop/docker-mitm। यह एक बहुत ही बुनियादी Docker इमेज है जो env variables https_proxy
, http_proxy
और SSL_CERT_FILE
सेट करेगी। इससे आप https_proxy
और http_proxy
में दिए गए होस्ट के अधिकांश ट्रैफिक को इंटरसेप्ट कर सकते हैं और SSL_CERT_FILE
में दिए गए SSL CERT पर भरोसा कर सकते हैं।
अपनी खुद की Docker MitM इमेज बनाएं और अपलोड करें
रेपो के निर्देशों का पालन करें अपने प्रॉक्सी IP पते को सेट करने के लिए और अपने SSL सर्ट को सेट करें और build the docker image।
http_proxy
सेट न करें ताकि मेटाडेटा एंडपॉइंट के लिए अनुरोधों को इंटरसेप्ट न किया जा सके।आप
ngrok
का उपयोग कर सकते हैं जैसे किngrok tcp 4444
अपने होस्ट के लिए प्रॉक्सी सेट करने के लिए।एक बार जब आपके पास Docker इमेज बन जाए, तो इसे किसी सार्वजनिक रेपो (Dockerhub, ECR...) में upload करें।
environment सेट करें
एक नया Codebuild प्रोजेक्ट बनाएं या मौजूदा के environment को modify करें।
प्रोजेक्ट को पहले से जनरेट की गई Docker इमेज का उपयोग करने के लिए सेट करें।
अपने होस्ट में MitM प्रॉक्सी सेट करें
Github रेपो में बताए गए अनुसार आप कुछ इस तरह का उपयोग कर सकते हैं:
mitmproxy संस्करण जो इस्तेमाल किया गया था वह 9.0.1 था, यह बताया गया कि संस्करण 10 के साथ यह काम नहीं कर सकता है।
बिल्ड चलाएं और क्रेडेंशियल्स कैप्चर करें
आप Authorization हेडर में टोकन देख सकते हैं:
यह aws cli के साथ भी किया जा सकता है जैसे कि
HTTP प्रोटोकॉल के माध्यम से
यह कमजोरी AWS द्वारा 20 फरवरी 2023 के सप्ताह में किसी समय सही कर दी गई थी (मुझे लगता है शुक्रवार को)। इसलिए अब एक हमलावर इसका दुरुपयोग नहीं कर सकता :)
एक हमलावर जिसके पास CodeBuild में उच्च अनुमतियां हैं, Github/Bitbucket टोकन को लीक कर सकता है जो कॉन्फ़िगर किया गया है या अगर अनुमतियां OAuth के माध्यम से कॉन्फ़िगर की गई थीं, तो कोड तक पहुंचने के लिए इस्तेमाल किया गया अस्थायी OAuth टोकन।
एक हमलावर CodeBuild प्रोजेक्ट में पर्यावरण चर http_proxy और https_proxy जोड़ सकता है जो उसकी मशीन की ओर इशारा करता है (उदाहरण के लिए
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 से बेसिक उदाहरण चलाएं
अंत में, Build the project पर क्लिक करें, credentials स्पष्ट पाठ (base64) में mitm पोर्ट पर भेजे जाएंगे:
अब एक हमलावर अपनी मशीन से टोकन का उपयोग कर सकेगा, सभी अधिकारों की सूची बना सकेगा और CodeBuild सेवा का सीधे उपयोग करने से आसानी से (दुरुपयोग) कर सकेगा।
Last updated