mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-02 11:00:16 -07:00
Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin
This commit is contained in:
@@ -10,14 +10,63 @@ Za više informacija o dynamodb proverite:
|
||||
../aws-services/aws-dynamodb-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Post Exploitation
|
||||
### `dynamodb:PutResourcePolicy`, i opcionalno `dynamodb:GetResourcePolicy`
|
||||
|
||||
Koliko ja znam, **ne postoji direktan način za eskalaciju privilegija u AWS-u samo sa nekim AWS `dynamodb` dozvolama**. Možete **čitati osetljive** informacije iz tabela (koje mogu sadržati AWS akreditive) i **pisati informacije u tabele** (što može pokrenuti druge ranjivosti, kao što su lambda kod injekcije...) ali sve ove opcije su već razmatrane na **DynamoDB Post Exploitation stranici**:
|
||||
Od marta 2024. godine, AWS nudi *politike zasnovane na resursima* za DynamoDB ([AWS News](https://aws.amazon.com/about-aws/whats-new/2024/03/amazon-dynamodb-resource-based-policies/)).
|
||||
|
||||
Dakle, ako imate `dynamodb:PutResourcePolicy` za tabelu, možete jednostavno dodeliti sebi ili bilo kojem drugom subjektu potpuni pristup tabeli.
|
||||
|
||||
Dodeljivanje `dynamodb:PutResourcePolicy` nasumičnom subjektu često se dešava slučajno, ako administratori misle da bi dodeljivanje `dynamodb:Put*` samo omogućilo subjektu da unese stavke u bazu podataka - ili ako su dodelili taj skup dozvola pre marta 2024...
|
||||
|
||||
Idealno, takođe imate `dynamodb:GetResourcePolicy`, tako da ne prepisujete druge potencijalno vitalne dozvole, već samo injektujete dodatne dozvole koje su vam potrebne:
|
||||
```bash
|
||||
# get the current resource based policy (if it exists) and save it to a file
|
||||
aws dynamodb get-resource-policy \
|
||||
--resource-arn <table_arn> \
|
||||
--query 'Policy' \
|
||||
--output text > policy.json
|
||||
```
|
||||
Ako ne možete da preuzmete trenutnu politiku, jednostavno koristite ovu koja daje potpuni pristup tabeli vašem principalu:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "FullAccessToDynamoDBTable",
|
||||
"Effect": "Allow",
|
||||
"Principal": {
|
||||
"AWS": "arn:aws:iam::<ACCOUNT_ID>:<USER_OR_ROLE>/<USERNAME_OR_ROLENAME>"
|
||||
},
|
||||
"Action": [
|
||||
"dynamodb:*"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:dynamodb:<REGION>:<AWS_ACCOUNT_ID>:table/<TABLENAME>"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Ako treba da ga prilagodite, ovde je lista svih mogućih DynamoDB akcija: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html). A ovde je lista svih akcija koje mogu biti dozvoljene putem politike zasnovane na resursima *I koje od ovih mogu biti korišćene između naloga (razmislite o eksfiltraciji podataka!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)
|
||||
|
||||
Sada, sa dokumentom politike `policy.json` spremnim, stavite politiku resursa:
|
||||
```bash
|
||||
# put the new policy using the prepared policy file
|
||||
# dynamodb does weirdly not allow a direct file upload
|
||||
aws dynamodb put-resource-policy \
|
||||
--resource-arn <table_arn> \
|
||||
--policy "$(cat policy.json)"
|
||||
```
|
||||
Sada biste trebali imati potrebne dozvole.
|
||||
|
||||
### Post Eksploatacija
|
||||
|
||||
Koliko ja znam, **ne postoji drugi direktan način za eskalaciju privilegija u AWS-u samo sa nekim AWS `dynamodb` dozvolama**. Možete **čitati osetljive** informacije iz tabela (koje mogu sadržati AWS akreditive) i **pisati informacije u tabelama** (što može pokrenuti druge ranjivosti, poput lambda kod injekcija...) ali sve ove opcije su već razmatrane na **DynamoDB Post Eksploatacija stranici**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### TODO: Čitati podatke zloupotrebom data Streams
|
||||
### TODO: Čitajte podatke zloupotrebom data Streams
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -34,7 +34,7 @@ Na primer, napadač sa tim **dozvolama nad cloudformation kanticom** pod nazivom
|
||||
]
|
||||
}
|
||||
```
|
||||
I otmica je moguća jer postoji **mali vremenski prozor od trenutka kada je šablon otpremljen** u bucket do trenutka kada je **šablon implementiran**. Napadač može jednostavno da kreira **lambda funkciju** u svom nalogu koja će **pokrenuti kada se pošalje obaveštenje iz bucketa**, i **otme** **sadržaj** tog **bucketa**.
|
||||
I otmica je moguća jer postoji **mali vremenski prozor od trenutka kada je šablon otpremljen** u bucket do trenutka kada je **šablon implementiran**. Napadač može jednostavno kreirati **lambda funkciju** u svom nalogu koja će **pokrenuti kada se pošalje obaveštenje iz bucketa**, i **oteti** **sadržaj** tog **bucketa**.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -45,11 +45,23 @@ Za više informacija proverite originalno istraživanje: [https://rhinosecurityl
|
||||
|
||||
Ovo su dozvole za **preuzimanje i otpremanje objekata na S3**. Nekoliko usluga unutar AWS-a (i van njega) koristi S3 skladište za čuvanje **konfiguracionih fajlova**.\
|
||||
Napadač sa **pristupom za čitanje** može pronaći **osetljive informacije** u njima.\
|
||||
Napadač sa **pristupom za pisanje** mogao bi **modifikovati podatke da bi zloupotrebio neku uslugu i pokušao da eskalira privilegije**.\
|
||||
Napadač sa **pristupom za pisanje** mogao bi **modifikovati podatke kako bi zloupotrebio neku uslugu i pokušao da eskalira privilegije**.\
|
||||
Evo nekoliko primera:
|
||||
|
||||
- Ako EC2 instanca čuva **korisničke podatke u S3 bucket-u**, napadač bi mogao da ih modifikuje da **izvrši proizvoljan kod unutar EC2 instance**.
|
||||
|
||||
### `s3:PutObject`, `s3:GetObject` (opciono) preko terraform state fajla
|
||||
|
||||
Veoma je uobičajeno da se [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) state fajlovi čuvaju u blob skladištu provajdera u oblaku, npr. AWS S3. Sufiks fajla za state fajl je `.tfstate`, a imena bucketa često takođe otkrivaju da sadrže terraform state fajlove. Obično, svaki AWS nalog ima jedan takav bucket za čuvanje state fajlova koji prikazuju stanje naloga. Takođe obično, u stvarnim nalozima gotovo uvek svi programeri imaju `s3:*`, a ponekad čak i poslovni korisnici imaju `s3:Put*`.
|
||||
|
||||
Dakle, ako imate dozvole navedene za ove fajlove, postoji vektorski napad koji vam omogućava da dobijete RCE u pipeline-u sa privilegijama `terraform` - većinom `AdministratorAccess`, čineći vas administratorom cloud naloga. Takođe, možete koristiti taj vektor za izvršenje napada uskraćivanja usluge tako što ćete naterati `terraform` da obriše legitimne resurse.
|
||||
|
||||
Pratite opis u sekciji *Zloupotreba Terraform State Fajlova* na stranici *Terraform Security* za direktno upotrebljiv kod za eksploataciju:
|
||||
|
||||
{{#ref}}
|
||||
terraform-security.md#abusing-terraform-state-files
|
||||
{{#endref}}
|
||||
|
||||
### `s3:PutBucketPolicy`
|
||||
|
||||
Napadač, koji treba da bude **iz istog naloga**, inače će se aktivirati greška `The specified method is not allowed`, sa ovom dozvolom će moći da sebi dodeli više dozvola nad bucket-ima omogućavajući mu da čita, piše, modifikuje, briše i izlaže buckete.
|
||||
@@ -111,7 +123,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <bucket-n
|
||||
### `s3:GetBucketAcl`, `s3:PutBucketAcl`
|
||||
|
||||
Napadač bi mogao da zloupotrebi ove dozvole da **dodeli sebi veći pristup** određenim kanticama.\
|
||||
Napomena: napadač ne mora biti iz istog naloga. Pored toga, pristup za pisanje
|
||||
Imajte na umu da napadač ne mora biti iz istog naloga. Pored toga, pristup za pisanje
|
||||
```bash
|
||||
# Update bucket ACL
|
||||
aws s3api get-bucket-acl --bucket <bucket-name>
|
||||
|
||||
Reference in New Issue
Block a user