# AWS - Relational Database (RDS) Enum {{#include ../../../banners/hacktricks-training.md}} ## Osnovne informacije **Relational Database Service (RDS)** koji nudi AWS je dizajniran da pojednostavi implementaciju, rad i skaliranje **relacione baze podataka u oblaku**. Ova usluga nudi prednosti troškovne efikasnosti i skalabilnosti dok automatizuje radno intenzivne zadatke kao što su obezbeđivanje hardvera, konfiguracija baze podataka, zakrpe i rezervne kopije. AWS RDS podržava različite široko korišćene motore relacijskih baza 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 uključuju: - **Upravljanje instancama baza podataka** je pojednostavljeno. - Kreiranje **read replicas** za poboljšanje performansi čitanja. - Konfiguracija **multi-Availability Zone (AZ) implementacija** za obezbeđivanje visoke dostupnosti i mehanizama prebacivanja. - **Integracija** sa drugim AWS uslugama, kao što su: - AWS Identity and Access Management (**IAM**) za robusnu kontrolu pristupa. - AWS **CloudWatch** za sveobuhvatno praćenje i metrike. - AWS Key Management Service (**KMS**) za obezbeđivanje enkripcije u mirovanju. ## Akreditivi Kada se kreira DB klaster, glavno **korisničko ime** može biti konfigurisano (**`admin`** po defaultu). Da biste generisali lozinku za ovog korisnika možete: - **Naznačiti** **lozinku** sami - Reći RDS da je **automatski generiše** - Reći RDS da je upravlja u **AWS Secret Manager** enkriptovano KMS ključem
### Autentifikacija Postoje 3 tipa opcija za autentifikaciju, ali korišćenje **glavne lozinke je uvek dozvoljeno**:
### Javni pristup i VPC Po defaultu **nema javnog pristupa** bazama podataka, međutim, **može biti odobren**. Stoga, po defaultu samo mašine iz iste VPC će moći da mu pristupe ako odabrana **grupa sigurnosti** (smeštena u EC2 SG) to dozvoljava. Umesto izlaganja DB instance, moguće je kreirati **RDS Proxy** koji **poboljšava** **skalabilnost** i **dostupnost** DB klastera. Pored toga, **port baze podataka se takođe može modifikovati**. ### Enkripcija **Enkripcija je omogućena po defaultu** koristeći AWS upravljani ključ (može se izabrati i CMK). Omogućavanjem vaše enkripcije, omogućavate **enkripciju u mirovanju za vašu skladištenje, snimke, read replicas i vaše rezervne kopije**. Ključevi za upravljanje ovom enkripcijom mogu biti izdati korišćenjem **KMS**.\ Nije moguće dodati ovaj nivo enkripcije nakon što je vaša baza podataka kreirana. **To mora biti učinjeno tokom njene kreacije**. Međutim, postoji **rešenje koje vam omogućava da enkriptujete neenkriptovanu bazu podataka na sledeći način**. Možete kreirati snimak vaše neenkriptovane baze podataka, kreirati enkriptovanu kopiju tog snimka, koristiti tu enkriptovanu snimku za kreiranje nove baze podataka, i na kraju, vaša baza podataka bi tada bila enkriptovana. #### Transparent Data Encryption (TDE) Pored mogućnosti enkripcije inherentnih RDS na nivou aplikacije, RDS takođe podržava **dodatne mehanizme enkripcije na platformi** za zaštitu podataka u mirovanju. Ovo uključuje **Transparent Data Encryption (TDE)** za Oracle i SQL Server. Međutim, važno je napomenuti da, iako TDE poboljšava sigurnost enkripcijom podataka u mirovanju, može takođe **uticati na performanse baze podataka**. Ovaj uticaj na performanse je posebno primetan kada se koristi u kombinaciji sa MySQL kriptografskim funkcijama ili Microsoft Transact-SQL kriptografskim funkcijama. Da biste koristili TDE, potrebni su određeni preliminarni koraci: 1. **Asocijacija sa grupom opcija**: - Baza podataka mora biti povezana sa grupom opcija. Grupe opcija služe kao kontejneri za podešavanja i funkcije, olakšavajući upravljanje bazom podataka, uključujući poboljšanja sigurnosti. - Međutim, važno je napomenuti da su grupe opcija dostupne samo za određene motore baza podataka i verzije. 2. **Uključivanje TDE u grupu opcija**: - Kada je povezana sa grupom opcija, opcija Oracle Transparent Data Encryption treba biti uključena u tu grupu. - Važno je prepoznati da, kada se TDE opcija doda grupi opcija, postaje trajna i ne može se ukloniti. 3. **TDE režimi enkripcije**: - TDE nudi dva različita režima enkripcije: - **TDE Tablespace Encryption**: Ovaj režim enkriptuje cele tabele, pružajući širi opseg zaštite podataka. - **TDE Column Encryption**: Ovaj režim se fokusira na enkripciju specifičnih, pojedinačnih elemenata unutar baze podataka, omogućavajući veću kontrolu nad tim koji su podaci enkriptovani. Razumevanje ovih preduslova i operativnih složenosti TDE je ključno za efikasno implementiranje i upravljanje enkripcijom unutar RDS, obezbeđujući i sigurnost podataka i usklađenost sa potrebnim standardima. ### Enumeracija ```bash # 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 snapshots aws rds describe-db-cluster-snapshots # 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 --db-snapshot-identifier --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 --master-user-password --apply-immediately ``` ### Neautentifikovani Pristup {{#ref}} ../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md {{#endref}} ### Privesc {{#ref}} ../aws-privilege-escalation/aws-rds-privesc.md {{#endref}} ### Post Eksploatacija {{#ref}} ../aws-post-exploitation/aws-rds-post-exploitation.md {{#endref}} ### Persistencija {{#ref}} ../aws-persistence/aws-rds-persistence.md {{#endref}} ### SQL Injekcija Postoje načini za pristup podacima iz DynamoDB koristeći **SQL sintaksu**, stoga su tipične **SQL injekcije takođe moguće**. {{#ref}} https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html {{#endref}} {{#include ../../../banners/hacktricks-training.md}}