AWS Codebuild - Token Leakage
Recover Github/Bitbucket Configured Tokens
पहले, जांचें कि क्या कोई स्रोत क्रेडेंशियल्स कॉन्फ़िगर किए गए हैं जिन्हें आप लीक कर सकते हैं:
Via Docker Image
यदि आप पाते हैं कि उदाहरण के लिए Github के लिए प्रमाणीकरण खाते में सेट है, तो आप exfiltrate उस access (GH token या OAuth token) को प्राप्त कर सकते हैं जिससे Codebuild को एक विशिष्ट docker image का उपयोग करने के लिए कहा जाए ताकि प्रोजेक्ट का निर्माण किया जा सके।
इसके लिए आप एक नया Codebuild प्रोजेक्ट बना सकते हैं या एक मौजूदा प्रोजेक्ट के environment को बदल सकते हैं ताकि 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 टोकन लीक कर सकता है जो कॉन्फ़िगर किया गया है या यदि अनुमतियाँ OAuth के माध्यम से कॉन्फ़िगर की गई हैं, तो कोड तक पहुँचने के लिए उपयोग किया जाने वाला अस्थायी OAuth टोकन।
एक हमलावर पर्यावरण चर http_proxy और https_proxy को CodeBuild प्रोजेक्ट में अपने मशीन की ओर इंगित कर सकता है (उदाहरण के लिए
http://5.tcp.eu.ngrok.io:14972
)।
फिर, गिटहब रेपो का URL HTTP का उपयोग करने के लिए बदलें, HTTPS के बजाय, उदाहरण के लिए: **http://**github.com/carlospolop-forks/TestActions
फिर, प्रॉक्सी चर (http_proxy और https_proxy) द्वारा इंगित किए गए पोर्ट में https://github.com/synchronizing/mitm से बुनियादी उदाहरण चलाएँ।
अंत में, प्रोजेक्ट बनाएं पर क्लिक करें, क्रेडेंशियल्स स्पष्ट पाठ (base64) में mitm पोर्ट पर भेजे जाएंगे:
अब एक हमलावर अपने मशीन से टोकन का उपयोग कर सकेगा, सभी विशेषाधिकारों की सूची बना सकेगा और (ab) सीधे CodeBuild सेवा का उपयोग करने की तुलना में इसे अधिक आसानी से उपयोग कर सकेगा।
Last updated