mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-06 04:41:21 -08:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Secrets Manager
|
||||
|
||||
अधिक जानकारी के लिए देखें:
|
||||
For more information check:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-secrets-manager-enum.md
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
### Read Secrets
|
||||
|
||||
**secrets स्वयं संवेदनशील जानकारी हैं**, उन्हें पढ़ने का तरीका जानने के लिए [check the privesc page](../aws-privilege-escalation/aws-secrets-manager-privesc.md) देखें।
|
||||
The **secrets themselves संवेदनशील जानकारी हैं**, इन्हें कैसे पढ़ना है यह जानने के लिए [check the privesc page](../aws-privilege-escalation/aws-secrets-manager-privesc.md)।
|
||||
|
||||
### DoS Change Secret Value
|
||||
|
||||
secret के मान को बदलकर आप **उन सभी सिस्टम्स को DoS कर सकते हैं जो उस मान पर निर्भर करते हैं।**
|
||||
Secret के value को बदलकर आप उस value पर निर्भर सभी सिस्टम्स को **DoS** कर सकते हैं।
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि पिछले मान भी संग्रहीत होते हैं, इसलिए पहले के मान पर वापस जाना आसान है।
|
||||
> ध्यान दें कि पिछली values भी संग्रहीत रहती हैं, इसलिए पहले की value पर आसानी से वापस जाना संभव है।
|
||||
```bash
|
||||
# Requires permission secretsmanager:PutSecretValue
|
||||
aws secretsmanager put-secret-value \
|
||||
@@ -28,19 +28,19 @@ aws secretsmanager put-secret-value \
|
||||
```
|
||||
### DoS: KMS key बदलना
|
||||
|
||||
यदि हमलावर के पास secretsmanager:UpdateSecret permission है, तो वह secret को attacker के स्वामित्व वाले KMS key का उपयोग करने के लिए कॉन्फ़िगर कर सकता है। उस key को प्रारंभ में इस तरह सेट किया जाता है कि कोई भी उसे एक्सेस और उपयोग कर सके, इसलिए secret को नए key के साथ अपडेट करना संभव होता है। यदि key सुलभ नहीं होता, तो secret को अपडेट नहीं किया जा सकता था।
|
||||
यदि attacker के पास secretsmanager:UpdateSecret permission है, तो वे secret को attacker के-owned KMS key का उपयोग करने के लिए configure कर सकते हैं। वह key प्रारम्भ में इस तरह set up की जाती है कि कोई भी उसे access और use कर सके, इसलिए secret को नए key के साथ update करना possible होता है। यदि वह key accessible नहीं होती, तो secret को update नहीं किया जा सकता था।
|
||||
|
||||
secret के लिए key बदलने के बाद, हमलावर अपनी key की कॉन्फ़िगरेशन बदलता है ताकि केवल वही उसे एक्सेस कर सके। इस तरह, secret के बाद के संस्करण नई key के साथ एन्क्रिप्ट होंगे, और चूँकि उस key तक कोई पहुँच नहीं होगी, secret को पुनः प्राप्त करने की क्षमता खो जाएगी।
|
||||
secret के लिए key बदलने के बाद, attacker अपनी key की configuration इस तरह modify कर देता है कि केवल वही उसे access कर सके। इस तरह, secret के subsequent versions नई key से encrypted होंगे, और चूंकि उस key तक कोई access नहीं होगा, secret को retrieve करने की ability खो जाएगी।
|
||||
|
||||
यह ध्यान रखना महत्वपूर्ण है कि यह असमर्थता केवल बाद के संस्करणों में ही होगी, जब secret की सामग्री बदल जाएगी, क्योंकि वर्तमान संस्करण अभी भी मूल KMS key के साथ एन्क्रिप्टेड है।
|
||||
यह ध्यान देने योग्य है कि यह पहुँच बंद होना केवल बाद के versions में ही होगा, जब secret की content बदल जाएगी, क्योंकि current version अभी भी original KMS key से encrypted है।
|
||||
```bash
|
||||
aws secretsmanager update-secret \
|
||||
--secret-id MyTestSecret \
|
||||
--kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
|
||||
```
|
||||
### DoS Deleting Secret
|
||||
### DoS Secret को डिलीट करना
|
||||
|
||||
Secret को delete करने के लिए न्यूनतम दिनों की संख्या 7 है।
|
||||
किसी Secret को डिलीट करने के लिए न्यूनतम अवधि 7 दिन है
|
||||
```bash
|
||||
aws secretsmanager delete-secret \
|
||||
--secret-id MyTestSecret \
|
||||
@@ -48,29 +48,29 @@ aws secretsmanager delete-secret \
|
||||
```
|
||||
## secretsmanager:RestoreSecret
|
||||
|
||||
एक secret को restore किया जा सकता है, जिससे उन secrets को भी बहाल करना संभव होता है जिन्हें deletion के लिए शेड्यूल किया गया है, क्योंकि secrets के लिए न्यूनतम deletion अवधि 7 दिन और अधिकतम 30 दिन है। secretsmanager:GetSecretValue permission के साथ यह उनकी सामग्री पुनः प्राप्त करना संभव बनाता है।
|
||||
एक secret को पुनर्स्थापित करना संभव है, जो उन secrets की बहाली की अनुमति देता है जो deletion के लिए शेड्यूल किए गए हैं, क्योंकि secrets के लिए न्यूनतम deletion अवधि 7 days है और अधिकतम 30 days है। secretsmanager:GetSecretValue permission के साथ मिलकर, इससे उनके contents को प्राप्त करना संभव हो जाता है।
|
||||
|
||||
जिस secret को delete किया जा रहा है उसे recover करने के लिए आप निम्नलिखित command का उपयोग कर सकते हैं:
|
||||
जिस secret को हटाए जाने की प्रक्रिया में है उसे recover करने के लिए, आप निम्नलिखित command का उपयोग कर सकते हैं:
|
||||
```bash
|
||||
aws secretsmanager restore-secret \
|
||||
--secret-id <Secret_Name>
|
||||
```
|
||||
## secretsmanager:DeleteResourcePolicy
|
||||
|
||||
यह action resource policy को delete करने की अनुमति देता है जो नियंत्रित करती है कि कौन किसी secret तक access कर सकता है। यदि resource policy को किसी विशिष्ट उपयोगकर्ताओं के सेट को access देने के लिए configured किया गया था तो यह DoS का कारण बन सकता है।
|
||||
यह क्रिया उस resource policy को हटाने की अनुमति देती है जो नियंत्रित करती है कि कौन किसी secret तक पहुँच सकता है। यदि resource policy को किसी विशिष्ट उपयोगकर्ताओं के समूह को पहुँच देने के लिए कॉन्फ़िगर किया गया था तो इससे DoS हो सकता है।
|
||||
|
||||
resource policy को delete करने के लिए:
|
||||
resource policy को हटाने के लिए:
|
||||
```bash
|
||||
aws secretsmanager delete-resource-policy \
|
||||
--secret-id <Secret_Name>
|
||||
```
|
||||
## secretsmanager:UpdateSecretVersionStage
|
||||
|
||||
एक secret की states का उपयोग secret के वर्शन प्रबंधित करने के लिए किया जाता है। AWSCURRENT उस सक्रिय वर्शन को चिह्नित करता है जिसका उपयोग एप्लिकेशन करते हैं, AWSPREVIOUS पिछले वर्शन को रखता है ताकि जरूरत पड़ने पर आप rollback कर सकें, और AWSPENDING rotation प्रक्रिया में उपयोग होता है ताकि एक नए वर्शन को current बनाने से पहले उसे तैयार और validate किया जा सके।
|
||||
एक secret की states का उपयोग secret के versions का प्रबंधन करने के लिए किया जाता है। AWSCURRENT उस सक्रिय संस्करण को चिह्नित करता है जिसे एप्लिकेशन उपयोग करते हैं, AWSPREVIOUS पिछला संस्करण रखता है ताकि आवश्यक होने पर आप रोलबैक कर सकें, और AWSPENDING rotation प्रक्रिया में एक नए संस्करण को वर्तमान बनाने से पहले उसे तैयार और मान्य करने के लिए उपयोग होता है।
|
||||
|
||||
एप्लिकेशन हमेशा AWSCURRENT वाले वर्शन को पढ़ते हैं। यदि कोई उस लेबल को गलत वर्शन पर स्थानांतरित कर देता है, तो ऐप्स अवैध credentials का उपयोग करेंगे और विफल हो सकते हैं।
|
||||
एप्लिकेशन हमेशा AWSCURRENT वाले संस्करण को पढ़ते हैं। यदि कोई उस लेबल को गलत संस्करण पर स्थानांतरित कर देता है, तो ऐप्स अमान्य क्रेडेंशियल्स का उपयोग करेंगे और विफल हो सकते हैं।
|
||||
|
||||
AWSPREVIOUS स्वतः उपयोग में नहीं आता। हालांकि, अगर AWSCURRENT हटा दिया जाए या गलत तरीके से पुनः असाइन कर दिया जाए, तो ऐसा दिखाई दे सकता है कि सब कुछ अभी भी पिछले वर्शन के साथ चल रहा है।
|
||||
AWSPREVIOUS स्वतः उपयोग में नहीं आता। हालांकि, यदि AWSCURRENT हटा दिया जाता है या गलत तरीके से पुनः असाइन किया जाता है, तो ऐसा लग सकता है कि सब कुछ अभी भी पिछले संस्करण के साथ चल रहा है।
|
||||
```bash
|
||||
aws secretsmanager update-secret-version-stage \
|
||||
--secret-id <your-secret-name-or-arn> \
|
||||
@@ -79,3 +79,52 @@ aws secretsmanager update-secret-version-stage \
|
||||
--remove-from-version-id <previous-version-id>
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### Mass Secret Exfiltration via BatchGetSecretValue (up to 20 per call)
|
||||
|
||||
Secrets Manager के BatchGetSecretValue API का दुरुपयोग करके एक ही अनुरोध में 20 तक secrets पुनःप्राप्त करें। यह प्रति-secret GetSecretValue को बार-बार चलाने की तुलना में API-कॉल की मात्रा को काफी कम कर सकता है। यदि --filters (tags/name) का उपयोग किया जाता है तो ListSecrets permission भी आवश्यक है। CloudTrail फिर भी बैच से पुनःप्राप्त प्रत्येक secret के लिए एक GetSecretValue इवेंट रिकॉर्ड करता है।
|
||||
|
||||
Required permissions
|
||||
- secretsmanager:BatchGetSecretValue
|
||||
- secretsmanager:GetSecretValue प्रत्येक लक्षित secret के लिए
|
||||
- secretsmanager:ListSecrets अगर --filters का उपयोग कर रहे हों
|
||||
- kms:Decrypt उन CMKs पर जो secrets के लिए उपयोग किए गए हैं (यदि aws/secretsmanager का उपयोग नहीं कर रहे हैं)
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान दें कि permission `secretsmanager:BatchGetSecretValue` अकेला secrets पुनःप्राप्त करने के लिए पर्याप्त नहीं है; आपको उन प्रत्येक secret को पुनःप्राप्त करने के लिए `secretsmanager:GetSecretValue` भी चाहिए।
|
||||
|
||||
Exfiltrate by explicit list
|
||||
```bash
|
||||
aws secretsmanager batch-get-secret-value \
|
||||
--secret-id-list <secret1> <secret2> <secret3> \
|
||||
--query 'SecretValues[].{Name:Name,Version:VersionId,Val:SecretString}'
|
||||
```
|
||||
Exfiltrate फ़िल्टर के द्वारा (tag key/value या name prefix)
|
||||
```bash
|
||||
# By tag key
|
||||
aws secretsmanager batch-get-secret-value \
|
||||
--filters Key=tag-key,Values=env \
|
||||
--max-results 20 \
|
||||
--query 'SecretValues[].{Name:Name,Val:SecretString}'
|
||||
|
||||
# By tag value
|
||||
aws secretsmanager batch-get-secret-value \
|
||||
--filters Key=tag-value,Values=prod \
|
||||
--max-results 20
|
||||
|
||||
# By name prefix
|
||||
aws secretsmanager batch-get-secret-value \
|
||||
--filters Key=name,Values=MyApp
|
||||
```
|
||||
आंशिक विफलताओं का प्रबंधन
|
||||
```bash
|
||||
# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
|
||||
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>
|
||||
```
|
||||
प्रभाव
|
||||
- कम API कॉल्स के साथ कई secrets का तेज़ “smash-and-grab”, जो संभावित रूप से GetSecretValue में स्पाइक्स के लिए ट्यून किए गए अलर्टिंग को बायपास कर सकता है।
|
||||
- CloudTrail लॉग्स अभी भी बैच द्वारा प्राप्त प्रत्येक secret के लिए एक GetSecretValue इवेंट शामिल करते हैं।
|
||||
|
||||
@@ -12,18 +12,18 @@ Secrets Manager के बारे में अधिक जानकारी
|
||||
|
||||
### `secretsmanager:GetSecretValue`
|
||||
|
||||
इस अनुमति वाले attacker AWS **Secretsmanager** में किसी **secret के अंदर का सहेजा गया मान** प्राप्त कर सकता है।
|
||||
इस अनुमति वाले attacker AWS **Secretsmanager** में किसी secret के अंदर **सहेजा हुआ मान** प्राप्त कर सकता है।
|
||||
```bash
|
||||
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
|
||||
```
|
||||
**संभावित प्रभाव:** AWS Secrets Manager service के अंदर उच्च संवेदनशील डेटा तक पहुँच।
|
||||
**संभावित प्रभाव:** AWS secrets manager service के अंदर अत्यंत संवेदनशील डेटा तक पहुँच।
|
||||
|
||||
> [!WARNING]
|
||||
> ध्यान रखें कि भले ही `secretsmanager:BatchGetSecretValue` अनुमति हो, एक हमलावर को संवेदनशील secrets प्राप्त करने के लिए `secretsmanager:GetSecretValue` की भी आवश्यकता होगी।
|
||||
> ध्यान दें कि भले ही `secretsmanager:BatchGetSecretValue` अनुमति हो, एक attacker को संवेदनशील secrets प्राप्त करने के लिए `secretsmanager:GetSecretValue` भी आवश्यक होगी।
|
||||
|
||||
### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`)
|
||||
|
||||
पूर्व अनुमतियों के साथ यह संभव है कि अन्य principals/accounts (even external) को **give access to other principals/accounts (even external)** करके **secret** तक पहुँच दी जा सके। ध्यान दें कि KMS key के साथ **read secrets encrypted** करने के लिए, उपयोगकर्ता के पास **access over the KMS key** भी होना चाहिए (अधिक जानकारी के लिए [KMS Enum page](../aws-services/aws-kms-enum.md)).
|
||||
पिछली अनुमतियों के साथ यह संभव है कि अन्य principals/accounts (even external) को इस **secret** तक पहुँच दी जा सके। ध्यान दें कि **KMS key से एन्क्रिप्ट किए गए secrets को पढ़ने** के लिए, user को **KMS key पर access** भी होना चाहिए (more info in the [KMS Enum page](../aws-services/aws-kms-enum.md)).
|
||||
```bash
|
||||
aws secretsmanager list-secrets
|
||||
aws secretsmanager get-resource-policy --secret-id <secret_name>
|
||||
|
||||
Reference in New Issue
Block a user