Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:21:25 +00:00
parent a6b21df8e1
commit afd1580602
44 changed files with 2099 additions and 524 deletions

View File

@@ -13,30 +13,30 @@ Artifact Registry के बारे में अधिक जानकार
### Dependency Confusion
- क्या होता है अगर एक **remote और एक standard** repositories **एक virtual** में मिलाए जाते हैं और एक package दोनों में मौजूद है?
- **Virtual repository** में **highest priority** सेट किया गया वाला उपयोग किया जाता है
- अगर **priority समान है**:
- अगर **version** **समान है**, तो **policy name alphabetically** पहले वाले का उपयोग किया जाता है
- अगर नहीं, तो **highest version** का उपयोग किया जाता है
- **वर्चुअल रिपॉजिटरी में सेट की गई उच्चतम प्राथमिकता** वाला उपयोग किया जाता है
- अगर **प्राथमिकता समान है**:
- अगर **संस्करण** **समान** है, तो **नीति का नाम वर्णानुक्रम में** पहले वर्चुअल रिपॉजिटरी में उपयोग किया जाता है
- अगर नहीं, तो **उच्चतम संस्करण** का उपयोग किया जाता है
> [!CAUTION]
> इसलिए, यह संभव है कि एक सार्वजनिक package registry में **highest version (dependency confusion)** का **दुरुपयोग** किया जाए अगर remote repository की priority अधिक या समान है
> इसलिए, यदि remote repository की प्राथमिकता उच्च या समान है, तो एक सार्वजनिक package registry में **उच्चतम संस्करण (dependency confusion)** का **दुरुपयोग** करना संभव है
यह तकनीक **persistence** और **unauthenticated access** के लिए उपयोगी हो सकती है क्योंकि इसे दुरुपयोग करने के लिए केवल **Artifact Registry** में संग्रहीत **library name** को **जानना** और **सार्वजनिक repository (उदाहरण के लिए Python के लिए PyPi)** में उसी library को उच्च version के साथ **बनाना** आवश्यक है।
यह तकनीक **persistence** और **unauthenticated access** के लिए उपयोगी हो सकती है क्योंकि इसे दुरुपयोग करने के लिए केवल **Artifact Registry में संग्रहीत एक लाइब्रेरी का नाम जानना** और **सार्वजनिक रिपॉजिटरी (उदाहरण के लिए Python के लिए PyPi) में उसी लाइब्रेरी को उच्च संस्करण के साथ बनाना** आवश्यक है।
Persistence के लिए आपको निम्नलिखित चरणों का पालन करना होगा:
persistence के लिए आपको निम्नलिखित चरणों का पालन करना होगा:
- **Requirements**: एक **virtual repository** का **अस्तित्व** होना चाहिए और इसका उपयोग किया जाना चाहिए, एक **internal package** जिसका **name** **public repository** में मौजूद नहीं है, का उपयोग किया जाना चाहिए।
- अगर यह मौजूद नहीं है तो एक remote repository बनाएं
- Remote repository को virtual repository में जोड़ें
- Remote repository को उच्च (या समान) priority देने के लिए virtual registry की नीतियों को संपादित करें।\
कुछ ऐसा चलाए:
- **आवश्यकताएँ**: एक **virtual repository** का **अस्तित्व** होना चाहिए और इसका उपयोग किया जाना चाहिए, एक **internal package** जिसका **नाम** **सार्वजनिक रिपॉजिटरी** में मौजूद नहीं है, का उपयोग किया जाना चाहिए।
- यदि यह मौजूद नहीं है तो एक remote repository बनाएं
- वर्चुअल रिपॉजिटरी में remote repository जोड़ें
- वर्चुअल रजिस्ट्री की नीतियों को संपादित करें ताकि remote repository को उच्च प्राथमिकता (या समान) दी जा सके।\
कुछ ऐसा चलाए:
- [gcloud artifacts repositories update --upstream-policy-file ...](https://cloud.google.com/sdk/gcloud/reference/artifacts/repositories/update#--upstream-policy-file)
- वैध package डाउनलोड करें, अपने दुर्भावनापूर्ण कोड को जोड़ें और इसे सार्वजनिक repository में उसी version के साथ पंजीकृत करें। हर बार जब एक developer इसे स्थापित करता है, तो वह आपका स्थापित करेगा!
- वैध पैकेज डाउनलोड करें, अपने दुर्भावनापूर्ण कोड को जोड़ें और इसे सार्वजनिक रिपॉजिटरी में उसी संस्करण के साथ पंजीकृत करें। हर बार जब एक डेवलपर इसे स्थापित करता है, तो वह आपका स्थापित करेगा!
Dependency confusion के बारे में अधिक जानकारी के लिए देखें:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/dependency-confusion
https://book.hacktricks.wiki/en/pentesting-web/dependency-confusion.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,17 +1,17 @@
# GCP - टोकन स्थिरता
# GCP - Token Persistance
{{#include ../../../banners/hacktricks-training.md}}
### प्रमाणित उपयोगकर्ता टोकन
किसी उपयोगकर्ता का **वर्तमान टोकन** प्राप्त करने के लिए आप चला सकते हैं:
To get the **current token** of a user you can run:
```bash
sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='<email>';"
```
इस पृष्ठ पर देखें कि **gcloud का उपयोग करके इस टोकन का सीधे उपयोग कैसे करें**:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#id-6440-1
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#gcp
{{#endref}}
**नया एक्सेस टोकन उत्पन्न करने** के लिए विवरण प्राप्त करने के लिए चलाएँ:
@@ -20,7 +20,7 @@ sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where
```
यह भी संभव है कि **`$HOME/.config/gcloud/application_default_credentials.json`** और **`$HOME/.config/gcloud/legacy_credentials/*/adc.json`** में रिफ्रेश टोकन पाए जाएं।
क नया रिफ्रेश किया गया एक्सेस टोकन प्राप्त करने के लिए **refresh token**, क्लाइंट आईडी, और क्लाइंट सीक्रेट के साथ चलाएँ:
ए रिफ्रेश किए गए एक्सेस टोकन को **रिफ्रेश टोकन**, क्लाइंट आईडी, और क्लाइंट सीक्रेट के साथ प्राप्त करने के लिए चलाएँ:
```bash
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
```
@@ -45,7 +45,7 @@ curl -s --data client_id=<client_id> --data client_secret=<client_secret> --data
```bash
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u
```
इस स्क्रिप्ट के साथ यह देखना संभव है कि **`gcloud`** द्वारा प्रमाणीकरण के लिए उपयोग क जाने वाल एप्लिकेशन कौन से स्कोप का समर्थन कर सकती है:
यह स्क्रिप्ट यह देखने की अनुमति देती है कि **`gcloud`** द्वारा प्रमाणीकरण के लिए उपयोग किए जाने वाल एप्लिकेशन के लिए कौन से स्कोप समर्थित है:
```bash
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"
@@ -67,16 +67,16 @@ https://www.googleapis.com/auth/userinfo.email
```
यह देखना दिलचस्प है कि यह ऐप **`drive`** स्कोप का समर्थन करता है, जो एक उपयोगकर्ता को GCP से Workspace में बढ़ाने की अनुमति दे सकता है यदि एक हमलावर उपयोगकर्ता को इस स्कोप के साथ एक टोकन उत्पन्न करने के लिए मजबूर करने में सफल होता है।
**यहां देखें कि कैसे** [**इसका दुरुपयोग करें**](../gcp-to-workspace-pivoting/#abusing-gcloud)**।**
**यहां देखें कि कैसे** [**इसका दुरुपयोग करें**](../gcp-to-workspace-pivoting/index.html#abusing-gcloud)**।**
### सेवा खाते
जैसे कि प्रमाणित उपयोगकर्ताओं के साथ, यदि आप एक सेवा खाते की **निजी कुंजी फ़ाइल को समझौता** करने में सफल होते हैं, तो आप इसे **आम तौर पर जितना चाहें उतना एक्सेस कर सकेंगे**।\
जैसे कि प्रमाणित उपयोगकर्ताओं के साथ, यदि आप एक सेवा खाते की **निजी कुंजी फ़ाइल को समझौता** कर लेते हैं, तो आप इसे **आम तौर पर जितना चाहें उतना एक्सेस कर सकेंगे**।\
हालांकि, यदि आप एक सेवा खाते का **OAuth टोकन** चुरा लेते हैं, तो यह और भी दिलचस्प हो सकता है, क्योंकि, भले ही डिफ़ॉल्ट रूप से ये टोकन केवल एक घंटे के लिए उपयोगी होते हैं, यदि **पीड़ित निजी एपीआई कुंजी को हटा देता है, तो OAuh टोकन तब भी मान्य रहेगा जब तक कि यह समाप्त नहीं हो जाता**
### मेटाडेटा
स्पष्ट रूप से, जब तक आप GCP वातावरण में चल रही मशीन के अंदर हैं, आप उस मशीन से जुड़े सेवा खाते को **मेटाडेटा एंडपॉइंट से संपर्क करके एक्सेस कर सकेंगे** (ध्यान दें कि इस एंडपॉइंट में आप जो Oauth टोकन एक्सेस कर सकते हैं, वे आमतौर पर स्कोप द्वारा प्रतिबंधित होते हैं)।
स्पष्ट रूप से, जब तक आप GCP वातावरण में चल रही मशीन के अंदर हैं, आप **उस मशीन से जुड़े सेवा खाते को मेटाडेटा एंडपॉइंट से संपर्क करके एक्सेस कर सकेंगे** (ध्यान दें कि इस एंडपॉइंट में आप जो Oauth टोकन एक्सेस कर सकते हैं, वे आमतौर पर स्कोप द्वारा प्रतिबंधित होते हैं)।
### सुधार