AWS - Relational Database (RDS) Enum

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

The Relational Database Service (RDS) offered by AWS je dizajniran da pojednostavi deploy, upravljanje i skaliranje relacione baze podataka u cloudu. Ovaj servis pruža prednosti u pogledu efikasnosti troškova i skalabilnosti dok automatizuje radno-intenzivne zadatke kao što su provisioning hardvera, konfiguracija baze, patchiranje i backupi.

AWS RDS podržava razne široko korišćene engines za relation baze podataka uključujući MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server i Amazon Aurora, sa kompatibilnošću za MySQL i PostgreSQL.

Ključne karakteristike RDS-a uključuju:

  • Jednostavnije upravljanje instancama baze podataka.
  • Kreiranje read replicas za poboljšanje performansi čitanja.
  • Konfigurisanje multi-Availability Zone (AZ) deployments za obezbeđenje visoke dostupnosti i failover mehanizama.
  • Integracija sa drugim AWS servisima, kao što su:
    • AWS Identity and Access Management (IAM) za robusnu kontrolu pristupa.
    • AWS CloudWatch za sveobuhvatni monitoring i metrike.
    • AWS Key Management Service (KMS) za obezbeđivanje encryption at rest.

Kredencijali

Prilikom kreiranja DB cluster-a master username se može konfigurisati (admin po defaultu). Da biste generisali password za ovog korisnika možete:

  • Uneti password sami
  • Reći RDS-u da ga auto generate
  • Reći RDS-u da ga menadžuje u AWS Secret Manager enkriptovan ključem iz KMS-a

Autentikacija

Postoje 3 vrste opcija za autentikaciju, ali korišćenje master password-a je uvek dozvoljeno:

Javni pristup & VPC

By default nije dodeljen javni pristup bazama podataka, međutim on može biti dodeljen. Dakle, po defaultu samo mašine iz iste VPC će moći da mu pristupe ako izabrani security group (se čuvaju u EC2 SG) to dozvoljava.

Umesto eksponiranja DB instance, moguće je kreirati RDS Proxy koji poboljšava scalability i availability DB cluster-a.

Takođe, port baze podataka se može izmeniti.

Enkripcija

Enkripcija je omogućena po defaultu koristeći AWS managed key (može se odabrati i CMK).

Omogućavanjem enkripcije omogućavate encryption at rest za skladište, snapshot-e, read replicas i vaše backup-e. Ključevi za upravljanje ovom enkripcijom mogu se izdavati koristeći KMS.
Nije moguće dodati ovaj nivo enkripcije nakon što je baza podataka kreirana. To mora biti urađeno tokom kreiranja.

Međutim, postoji workaround koji vam omogućava da enkriptujete neenkriptovanu bazu na sledeći način. Možete napraviti snapshot vaše neenkriptovane baze, kreirati enkriptovanu kopiju tog snapshot-a, koristiti taj enkriptovani snapshot za kreiranje nove baze, i na kraju će vaša baza biti enkriptovana.

Transparent Data Encryption (TDE)

Pored enkripcionih mogućnosti koje RDS pruža na nivou aplikacije, RDS takođe podržava dodatne mehanizme enkripcije na nivou platforme kako bi zaštitio podatke u mirovanju. Ovo uključuje Transparent Data Encryption (TDE) za Oracle i SQL Server. Važno je napomenuti da iako TDE pojačava sigurnost enkriptovanjem podataka u mirovanju, može takođe uticati na performanse baze. Taj uticaj na performanse je naročito primetan kada se koristi u kombinaciji sa MySQL cryptographic funkcijama ili Microsoft Transact-SQL cryptographic funkcijama.

Da biste koristili TDE, potrebni su određeni preliminarni koraci:

  1. Option Group Association:
  • Baza podaci mora biti povezana sa option group-om. Option groups služe kao kontejneri za podešavanja i funkcije, olakšavajući upravljanje bazom, uključujući sigurnosna poboljšanja.
  • Međutim, važno je napomenuti da su option groups dostupni samo za određene database engines i verzije.
  1. Inclusion of TDE in Option Group:
  • Kada je povezana sa option group-om, Oracle Transparent Data Encryption opcija treba biti uključena u tu grupu.
  • Bitno je razumeti da kada se TDE opcija doda u option group, ona postaje stalna i ne može biti uklonjena.
  1. TDE Encryption Modes:
  • TDE nudi dva različita moda enkripcije:
  • TDE Tablespace Encryption: Ovaj mod enkriptuje cele tablespace-ove, pružajući širi obuhvat zaštite podataka.
  • TDE Column Encryption: Ovaj mod se fokusira na enkriptovanje specifičnih, pojedinačnih elemenata unutar baze, omogućavajući granularniju kontrolu nad tim koji su podaci enkriptovani.

Razumevanje ovih preduslova i operativnih nijansi TDE-a je ključno za efikasnu implementaciju i upravljanje enkripcijom unutar RDS-a, osiguravajući kako bezbednost podataka tako i usklađenost sa potrebnim standardima.

Enumeracija

# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
aws rds describe-db-cluster-backtracks --db-cluster-identifier <cluster-name>

## Cluster snapshots
aws rds describe-db-cluster-snapshots
aws rds describe-db-cluster-snapshots --include-public --snapshot-type public

## Restore cluster snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-cluster-identifier <ID> --snapshot-identifier <ID>

# Get DB instances info
aws rds describe-db-instances #username, url, port, vpc, SG, is public?
aws rds describe-db-security-groups

## Find automated backups
aws rds describe-db-instance-automated-backups

## Find snapshots
aws rds describe-db-snapshots
aws rds describe-db-snapshots --include-public --snapshot-type public

## Restore snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a

# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public

# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
aws rds describe-db-proxy-targets

## reset credentials of MasterUsername
aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password <NewPassword> --apply-immediately

Neautentifikovan pristup

AWS - RDS Unauthenticated Enum

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistence

AWS - RDS Persistence

SQL Injection

Postoje načini da se pristupi DynamoDB podacima koristeći SQL syntax, stoga su tipične SQL injections takođe moguće.

SQL Injection - HackTricks

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks