Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat

This commit is contained in:
Translator
2025-10-06 10:00:59 +00:00
parent e5d730dcec
commit 9ec52c1353
2 changed files with 71 additions and 22 deletions
@@ -4,43 +4,43 @@
## Secrets Manager
Kwa maelezo zaidi angalia:
For more information check:
{{#ref}}
../aws-services/aws-secrets-manager-enum.md
{{#endref}}
### Read Secrets
### Soma Siri
**secrets zenyewe ni taarifa nyeti**, [angalia ukurasa wa privesc](../aws-privilege-escalation/aws-secrets-manager-privesc.md) ili kujifunza jinsi ya kuvisoma.
The **Siri zenyewe ni taarifa nyeti**, [angalia ukurasa wa privesc](../aws-privilege-escalation/aws-secrets-manager-privesc.md) ili ujifunze jinsi ya kuzisoma.
### DoS Change Secret Value
### DoS Badilisha Thamani ya Siri
Kubadilisha thamani ya secret kunaweza **kusababisha DoS kwa mifumo yote inayotegemea thamani hiyo.**
Changing the value of the secret you could **DoS all the system that depends on that value.**
> [!WARNING]
> Kumbuka kwamba thamani za awali pia zinahifadhiwa, hivyo ni rahisi kurudisha thamani ya awali.
> Kumbuka kuwa thamani za awali pia zinahifadhiwa, hivyo ni rahisi tu kurudi kwenye thamani ya awali.
```bash
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
```
### DoS Badilisha KMS key
### DoS Change KMS key
Ikiwa mshambuliaji ana ruhusa secretsmanager:UpdateSecret, anaweza kusanidi siri kutumia KMS key inayomilikiwa na mshambuliaji. Ufunguo huo awali umewekwa kwa njia kwamba mtu yeyote anaweza kuufikia na kutumia, hivyo kusasisha siri kwa kutumia KMS key mpya kunawezekana. Ikiwa ufunguo haukufikiwa, siri haiwezi kusasishwa.
Ikiwa attacker ana ruhusa secretsmanager:UpdateSecret, wanaweza kusanidi secret itumie KMS key inayomilikiwa na attacker. KMS key hiyo awali imewekwa kwa namna kwamba mtu yeyote anaweza kuipata na kuitumia, hivyo kusasisha secret kwa key mpya kunawezekana. Ikiwa key haikutambulika/haikutumika, secret haiwezi kusasishwa.
Baada ya kubadilisha ufunguo wa siri, mshambuliaji hubadilisha usanidi wa ufunguo wake ili ufikivu uke kwa yeye pekee. Kwa njia hii, kwenye matoleo yanayofuata ya siri, itafichwa kwa kutumia ufunguo mpya, na kwa kuwa hakuna njia ya kuufikia, uwezo wa kupata siri utapotea.
Baada ya kubadilisha key ya secret, attacker hubadilisha usanidi wa key yao ili ni wao pekee waweze kuifikia. Kwa njia hiyo, katika matoleo yanayofuata ya secret, itafungwa kwa key mpya, na kwa kuwa hakuna ufikiaji wa key hiyo, uwezo wa kupata secret utapotea.
Ni muhimu kutaja kwamba ukosefu huu wa ufikivu utatokea tu katika matoleo ya baadaye, baada ya yaliyomo kwenye siri kubadilika, kwani toleo la sasa bado limefichwa kwa kutumia KMS key ya awali.
Ni muhimu kutambua kuwa ukosefu huu wa ufikaji utaonekana tu katika matoleo ya baadaye, baada ya yaliyomo kwenye secret kubadilika, kwani toleo la sasa bado limefungwa kwa KMS key ya awali.
```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 Kufuta Siri
### DoS Deleting Secret
Idadi ya chini ya siku za kufuta siri ni 7.
Idadi ndogo kabisa ya siku za kufuta secret ni 7
```bash
aws secretsmanager delete-secret \
--secret-id MyTestSecret \
@@ -48,16 +48,16 @@ aws secretsmanager delete-secret \
```
## secretsmanager:RestoreSecret
Iwezekana kurejesha secret, jambo linaloruhusu urejesho wa secrets zilizowekwa kufutwa, kwa sababu kipindi cha chini cha kufutwa kwa secrets ni siku 7 na kipindi cha juu ni siku 30. Pamoja na ruhusa secretsmanager:GetSecretValue, hili linafanya iwezekane kupata yaliyomo ndani yao.
Inawezekana kurejesha secret, jambo linaloruhusu urejeshaji wa siri ambazo zimepangwa kufutwa, kwa sababu kipindi cha chini cha kufutwa kwa siri ni siku 7 na kipindi cha juu ni siku 30. Pamoja na ruhusa secretsmanager:GetSecretValue, hili linafanya iwezekane kupata yaliyomo yao.
Ili kurejesha secret ambayo iko katika mchakato wa kufutwa, unaweza kutumia amri ifuatayo:
Ili kurejesha siri ambayo iko mchakato wa kufutwa, unaweza kutumia amri ifuatayo:
```bash
aws secretsmanager restore-secret \
--secret-id <Secret_Name>
```
## secretsmanager:DeleteResourcePolicy
Kitendo hiki kinaruhusu kufuta resource policy inayodhibiti nani anaweza kupata secret. Hii inaweza kusababisha DoS ikiwa resource policy ilipangwa kuruhusu ufikiaji kwa kundi maalum la watumiaji.
Kitendo hiki kinaruhusu kufuta resource policy inayodhibiti nani anaweza kupata secret. Hii inaweza kusababisha DoS ikiwa resource policy ilikuwa imewekwa ili kuruhusu ufikiaji kwa kundi maalum la watumiaji.
Ili kufuta resource policy:
```bash
@@ -66,11 +66,11 @@ aws secretsmanager delete-resource-policy \
```
## secretsmanager:UpdateSecretVersionStage
Hali za siri hutumika kusimamia matoleo ya siri. AWSCURRENT inaonyesha toleo linalofanya kazi ambalo programu zinalitumia, AWSPREVIOUS inahifadhi toleo la awali ili uweze kurudi nyuma ikiwa inahitajika, na AWSPENDING inatumiwa katika mchakato wa rotation kuandaa na kuthibitisha toleo jipya kabla ya kulifanya kuwa toleo la sasa.
Hali za secret zinatumika kusimamia matoleo ya secret. AWSCURRENT inaashiria toleo linalotumika na programu, AWSPREVIOUS huhifadhi toleo la awali ili uweze kurudi nyuma ikiwa ni lazima, na AWSPENDING inatumiwa katika mchakato wa mzunguko kutayarisha na kuthibitisha toleo jipya kabla ya kulifanya kuwa la sasa.
Programu daima husoma toleo lenalo lebo ya AWSCURRENT. Ikiwa mtu atahamisha lebo hiyo kwa toleo lisilo sahihi, programu zitatumia credentials zisizo halali na zinaweza kushindwa.
Programu daima husoma toleo lenye lebo AWSCURRENT. Ikiwa mtu atahamisha lebo hiyo kwa toleo lisilo sahihi, programu zitaitumia kredenshali batili na zinaweza kushindwa.
AWSPREVIOUS haitumiki moja kwa moja. Hata hivyo, ikiwa AWSCURRENT itaondolewa au itatoleweshwa vibaya, kunaweza kuonekana kwamba kila kitu bado kinaendesha kwa toleo la awali.
AWSPREVIOUS haitumiki kiotomatiki. Hata hivyo, ikiwa AWSCURRENT itaondolewa au itapangwa tena kwa njia isiyofaa, kunaweza kuonekana kuwa kila kitu bado kinaendelea kwa toleo la awali.
```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)
Tumia kwa mbaya Secrets Manager BatchGetSecretValue API ili kupata hadi siri 20 kwa ombi moja. Hii inaweza kupunguza kwa kiasi kikubwa idadi ya API-call ikilinganishwa na kurudia GetSecretValue kwa kila siri. Kama filters zinatumika (tags/name), ruhusa ya ListSecrets pia inahitajika. CloudTrail bado inarekodi tukio la GetSecretValue moja kwa kila siri inayopatikana kwenye batch.
Required permissions
- secretsmanager:BatchGetSecretValue
- secretsmanager:GetSecretValue kwa kila siri lengwa
- secretsmanager:ListSecrets ikiwa unatumia --filters
- kms:Decrypt kwenye CMKs zinazotumika na siri (ikiwa huna kutumia aws/secretsmanager)
> [!WARNING]
> Kumbuka kwamba ruhusa `secretsmanager:BatchGetSecretValue` haitoshi peke yake ili kupata siri; pia unahitaji `secretsmanager:GetSecretValue` kwa kila siri unayotaka kupata.
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 kwa vichujio (funguo/thamani ya tag au kiambatisho cha jina)
```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
```
Kushughulikia kushindwa kwa sehemu
```bash
# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>
```
Athari
- Haraka “smash-and-grab” ya siri nyingi kwa API calls chache, ikiwezekana ikiepuka onyo zilizowekwa kugundua mwinuko wa GetSecretValue.
- CloudTrail logs bado zinajumuisha tukio moja la GetSecretValue kwa kila siri iliyopatikana na batch.
@@ -12,18 +12,18 @@ Kwa maelezo zaidi kuhusu Secrets Manager angalia:
### `secretsmanager:GetSecretValue`
Mshambuliaji mwenye ruhusa hii anaweza kupata the **thamani iliyohifadhiwa ndani ya siri** katika AWS **Secretsmanager**.
Mshambuliaji aliye na ruhusa hii anaweza kupata **thamani iliyohifadhiwa ndani ya siri** katika AWS **Secretsmanager**.
```bash
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
```
**Athari Inayowezekana:** Kufikia data nyeti sana ndani ya AWS secrets manager service.
**Athari Inayowezekana:** Kupata data nyeti sana ndani ya AWS secrets manager service.
> [!WARNING]
> Kumbuka kwamba hata ukiwa na ruhusa ya `secretsmanager:BatchGetSecretValue`, mshambuliaji pia atahitaji `secretsmanager:GetSecretValue` ili kupata secrets nyeti.
> Kumbuka kwamba hata ukiwa na ruhusa ya `secretsmanager:BatchGetSecretValue`, mshambuliaji pia atahitaji `secretsmanager:GetSecretValue` ili kupata siri nyeti.
### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`)
Kwa ruhusa zilizotangulia, inawezekana **kumpa ufikiaji principals/akaunti nyingine (hata za nje)** kufikia **secret**. Kumbuka kwamba ili **kusoma secrets zilizosimbwa** kwa KMS key, mtumiaji pia anahitaji kuwa na **ufikiaji wa KMS key** (maelezo zaidi kwenye [KMS Enum page](../aws-services/aws-kms-enum.md)).
Kwa ruhusa zilizotangulia, inawezekana **kutoa ufikiaji kwa principals/accounts wengine (hata external)** ili kufikia **secret**. Kumbuka kwamba ili **kusoma secrets zilizofichwa** kwa KMS key, mtumiaji pia anahitaji kuwa na **ufikiaji wa KMS key** (maelezo zaidi kwenye [KMS Enum page](../aws-services/aws-kms-enum.md)).
```bash
aws secretsmanager list-secrets
aws secretsmanager get-resource-policy --secret-id <secret_name>