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

This commit is contained in:
Translator
2025-10-06 10:00:25 +00:00
parent 55acd58e07
commit 0894db49fc
2 changed files with 66 additions and 21 deletions

View File

@@ -10,16 +10,16 @@ For more information check:
../aws-services/aws-secrets-manager-enum.md
{{#endref}}
### Lees geheime
### Lees Secrets
Die **geheime self is sensitiewe inligting**, [kyk na die privesc bladsy](../aws-privilege-escalation/aws-secrets-manager-privesc.md) om te leer hoe om dit te lees.
Die **secrets self is sensitiewe inligting**, [sien die privesc bladsy](../aws-privilege-escalation/aws-secrets-manager-privesc.md) om te leer hoe om dit te lees.
### DoS Verander geheime waarde
### DoS: Verander Secret Value
Deur die waarde van die geheim te verander, kan jy **'n DoS op al die stelsels wat van daardie waarde afhanklik is veroorsaak.**
Deur die waarde van die secret te verander kan jy **DoS al die stelsels wat van daardie waarde afhanklik is.**
> [!WARNING]
> Let wel dat vorige waardes ook gestoor word, so dit is maklik om net terug te keer na die vorige waarde.
> Let daarop dat vorige waardes ook gestoor word, so dit is maklik om net terug te gaan na die vorige waarde.
```bash
# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
@@ -28,11 +28,11 @@ aws secretsmanager put-secret-value \
```
### DoS Change KMS key
As die aanvaller die secretsmanager:UpdateSecret toestemming het, kan hulle die geheim konfigureer om 'n KMS key te gebruik wat deur die aanvaller besit word. Daardie sleutel word aanvanklik so opgestel dat enigiemand daartoe toegang het en dit kan gebruik, sodat die geheim met die nuwe sleutel bygewerk kan word. As die sleutel nie toeganklik was nie, kon die geheim nie bygewerk word nie.
As die aanvaller die secretsmanager:UpdateSecret permission het, kan hulle die geheim konfigureer om 'n KMS key te gebruik wat deur die aanvaller besit word. Daardie key word aanvanklik so opgestel dat enigiemand daartoe toegang kan kry en dit kan gebruik, so dit is moontlik om die geheim met die nuwe key by te werk. As die key nie toeganklik was nie, sou die geheim nie bygewerk kon word nie.
Na die verandering van die sleutel vir die geheim, wysig die aanvaller die konfigurasie van hul sleutel sodat slegs hulle daartoe toegang het. Op hierdie manier sal toekomstige weergawes van die geheim met die nuwe sleutel geënkripteer word, en aangesien daar geen toegang tot daardie sleutel is nie, sal die vermoë om die geheim op te haal verlore gaan.
Nadat die key vir die geheim verander is, wysig die aanvaller die konfigurasie van hulle key sodat net hulle daartoe toegang het. Op hierdie manier sal toekomstige weergawes van die geheim met die nuwe key versleuteld word, en aangesien daar geen toegang daartoe is nie, sal die vermoë om die geheim op te vra verlore wees.
Dit is belangrik om te let dat hierdie ontoeganklikheid slegs in latere weergawes sal voorkom, nadat die inhoud van die geheim verander is, aangesien die huidige weergawe steeds met die oorspronklike KMS key geënkripteer is.
Dit is belangrik om op te let dat hierdie ontoeganklikheid slegs in latere weergawes sal voorkom, nadat die inhoud van die geheim verander het, aangesien die huidige weergawe nog steeds met die oorspronklike KMS key versleuteld is.
```bash
aws secretsmanager update-secret \
--secret-id MyTestSecret \
@@ -40,7 +40,7 @@ aws secretsmanager update-secret \
```
### DoS Deleting Secret
Die minimum aantal dae om 'n secret te verwyder is 7
Die minimum aantal dae om 'n secret te verwyder, is 7
```bash
aws secretsmanager delete-secret \
--secret-id MyTestSecret \
@@ -48,29 +48,29 @@ aws secretsmanager delete-secret \
```
## secretsmanager:RestoreSecret
Dit is moontlik om 'n geheim te herstel, wat die herstel van geheime wat vir verwydering geskeduleer is moontlik maak, aangesien die minimum verwyderingsperiode vir geheime 7 dae is en die maksimum 30 dae. Saam met die secretsmanager:GetSecretValue toestemming maak dit moontlik om hul inhoud te bekom.
Dit is moontlik om 'n geheim te herstel, wat die herstel van geheime wat vir verwydering geskeduleer is toelaat, aangesien die minimum verwyderingsperiode vir geheime 7 dae en die maksimum 30 dae is. Saam met die secretsmanager:GetSecretValue-toestemming maak dit moontlik om hul inhoud te verkry.
Om 'n geheim wat in die proses van verwydering is te herstel, gebruik jy die volgende opdrag:
Om 'n geheim te herstel wat in die proses is om verwyder te word, kan jy die volgende opdrag gebruik:
```bash
aws secretsmanager restore-secret \
--secret-id <Secret_Name>
```
## secretsmanager:DeleteResourcePolicy
Hierdie aksie maak dit moontlik om die hulpbronbeleid te verwyder wat beheer wie toegang tot 'n geheim het. Dit kan tot 'n DoS lei indien die hulpbronbeleid gekonfigureer was om toegang aan 'n spesifieke groep gebruikers toe te laat.
Hierdie aksie laat toe om die resource policy wat beheer wie toegang tot 'n secret het, te verwyder. Dit kan lei tot 'n DoS as die resource policy gekonfigureer was om toegang aan 'n spesifieke groep gebruikers toe te staan.
Om die hulpbronbeleid te verwyder:
Om die resource policy te verwyder:
```bash
aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>
```
## secretsmanager:UpdateSecretVersionStage
Die state van 'n geheim word gebruik om weergawes van 'n geheim te bestuur. AWSCURRENT merk die aktiewe weergawe wat toepassings gebruik, AWSPREVIOUS hou die vorige weergawe sodat jy terug kan rol indien nodig, en AWSPENDING word in die rotasieproses gebruik om 'n nuwe weergawe voor te berei en te valideer voordat dit die huidige gemaak word.
Die state van 'n secret word gebruik om weergawes van 'n secret te bestuur. AWSCURRENT merk die aktiewe weergawe wat toepassings gebruik, AWSPREVIOUS hou die vorige weergawe sodat jy kan terugrol indien nodig, en AWSPENDING word in die rotasieproses gebruik om 'n nuwe weergawe voor te berei en te valideer voordat dit die huidige een gemaak word.
Toepassings lees altyd die weergawe met AWSCURRENT. As iemand daardie etiket na die verkeerde weergawe skuif, sal die toepassings ongeldige inlogbewyse gebruik en kan misluk.
Toepassings lees altyd die weergawe met AWSCURRENT. As iemand daardie etiket na die verkeerde weergawe skuif, sal die apps ongeldige inlogbewyse gebruik en kan misluk.
AWSPREVIOUS word nie outomaties gebruik nie. As AWSCURRENT egter verwyder of verkeerd toegewys word, kan dit lyk asof alles steeds op die vorige weergawe loop.
AWSPREVIOUS word nie outomaties gebruik nie. As AWSCURRENT egter verwyder of verkeerd heraangewys word, kan dit lyk asof alles steeds met die vorige weergawe loop.
```bash
aws secretsmanager update-secret-version-stage \
--secret-id <your-secret-name-or-arn> \
@@ -79,3 +79,48 @@ 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)
Misbruik die Secrets Manager BatchGetSecretValue API om tot 20 geheime in 'n enkele versoek te kry. Dit kan die aantal API-oproepe drasties verminder vergeleke met die herhaalde gebruik van GetSecretValue vir elke geheim. As filters gebruik word (tags/name), is secretsmanager:ListSecrets-permissie ook nodig. CloudTrail registreer steeds een GetSecretValue-gebeurtenis per geheim wat in die batch onttrek is.
Vereiste permissies
- secretsmanager:BatchGetSecretValue
- secretsmanager:GetSecretValue vir elke teikengeheim
- secretsmanager:ListSecrets (nodig as --filters gebruik word)
- kms:Decrypt op die CMKs wat deur die geheime gebruik word (as jy nie aws/secretsmanager gebruik nie)
> [!WARNING]
> Let daarop dat die permissie `secretsmanager:BatchGetSecretValue` op sigself nie voldoende is om geheime te onttrek nie; jy het ook `secretsmanager:GetSecretValue` nodig vir elke geheim wat jy wil onttrek.
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 deur filters (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
```
Hantering van gedeeltelike mislukkings
```bash
# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>
```
Impact
- Vinnige “smash-and-grab” van baie secrets met minder API-oproepe, wat moontlik waarskuwings wat op pieke van GetSecretValue ingestel is, kan omseil.
- CloudTrail logs sluit steeds een GetSecretValue-gebeurtenis per secret in wat deur die batch opgehaal is.

View File

@@ -4,7 +4,7 @@
## Secrets Manager
Vir meer inligting oor Secrets Manager, kyk:
Vir meer inligting oor Secrets Manager kyk:
{{#ref}}
../aws-services/aws-secrets-manager-enum.md
@@ -12,18 +12,18 @@ Vir meer inligting oor Secrets Manager, kyk:
### `secretsmanager:GetSecretValue`
'n attacker met hierdie toestemming kan die **gestoorde waarde binne 'n secret** in AWS **Secretsmanager** kry.
An attacker met hierdie toestemming kan die **gestoorde waarde binne 'n secret'** in AWS **Secretsmanager** kry.
```bash
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
```
**Potential Impact:** Toegang tot hoogs sensitiewe data binne die AWS secrets manager service.
**Potensiële impak:** Toegang tot hoogs sensitiewe data binne die AWS secrets manager service.
> [!WARNING]
> Let wel dat selfs met die `secretsmanager:BatchGetSecretValue` permissie 'n aanvaller ook `secretsmanager:GetSecretValue` nodig sou hê om die sensitiewe secrets te verkry.
> Let wel dat selfs met die `secretsmanager:BatchGetSecretValue` toestemming 'n aanvaller ook die `secretsmanager:GetSecretValue` toestemming nodig het om die sensitiewe secrets te kry.
### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`)
Met die voorafgaande permissies is dit moontlik om **ander principals/accounts (selfs ekstern)** toegang tot die **secret** te gee. Let wel dat om **geënkripteerde secrets te lees** wat met 'n KMS key gekodeer is, die gebruiker ook **toegang tot die KMS key** moet hê (meer inligting op die [KMS Enum page](../aws-services/aws-kms-enum.md)).
Met die vorige permissies is dit moontlik om **toegang te gee aan ander principals/accounts (selfs ekstern)** om toegang tot die **secret** te kry. Let wel dat om **secrets wat met 'n KMS key geënkripteer is** te lees, die gebruiker ook **toegang tot die KMS key** moet hê (meer info in die [KMS Enum page](../aws-services/aws-kms-enum.md)).
```bash
aws secretsmanager list-secrets
aws secretsmanager get-resource-policy --secret-id <secret_name>