mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela
This commit is contained in:
@@ -4,71 +4,71 @@
|
||||
|
||||
## 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.
|
||||
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 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.
|
||||
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 uključuju:
|
||||
Ključne karakteristike RDS-a uključuju:
|
||||
|
||||
- **Upravljanje instancama baza podataka** je pojednostavljeno.
|
||||
- Jednostavnije **upravljanje instancama baze podataka**.
|
||||
- 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.
|
||||
- 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.
|
||||
|
||||
## Akreditivi
|
||||
## Kredencijali
|
||||
|
||||
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:
|
||||
Prilikom kreiranja DB cluster-a master **username** se može konfigurisati (**`admin`** po defaultu). Da biste generisali password 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
|
||||
- **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
|
||||
|
||||
<figure><img src="../../../images/image (144).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Autentifikacija
|
||||
### Autentikacija
|
||||
|
||||
Postoje 3 tipa opcija za autentifikaciju, ali korišćenje **glavne lozinke je uvek dozvoljeno**:
|
||||
Postoje 3 vrste opcija za autentikaciju, ali korišćenje **master password-a je uvek dozvoljeno**:
|
||||
|
||||
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Javni pristup i VPC
|
||||
### Javni pristup & 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.
|
||||
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 izlaganja DB instance, moguće je kreirati **RDS Proxy** koji **poboljšava** **skalabilnost** i **dostupnost** DB klastera.
|
||||
Umesto eksponiranja DB instance, moguće je kreirati **RDS Proxy** koji **poboljšava** **scalability** i **availability** DB cluster-a.
|
||||
|
||||
Pored toga, **port baze podataka se takođe može modifikovati**.
|
||||
Takođe, **port baze podataka se može izmeniti**.
|
||||
|
||||
### Enkripcija
|
||||
|
||||
**Enkripcija je omogućena po defaultu** koristeći AWS upravljani ključ (može se izabrati i CMK).
|
||||
**Enkripcija je omogućena po defaultu** koristeći AWS managed key (može se odabrati 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**.
|
||||
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 **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.
|
||||
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 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.
|
||||
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. **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.
|
||||
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.
|
||||
2. **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.
|
||||
3. **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 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.
|
||||
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
|
||||
```bash
|
||||
@@ -80,6 +80,10 @@ 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?
|
||||
@@ -91,6 +95,7 @@ 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
|
||||
|
||||
@@ -105,7 +110,7 @@ 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
|
||||
```
|
||||
### Neautentifikovani Pristup
|
||||
### Neautentifikovan pristup
|
||||
|
||||
{{#ref}}
|
||||
../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md
|
||||
@@ -117,21 +122,21 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
../aws-privilege-escalation/aws-rds-privesc/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Post Eksploatacija
|
||||
### Post Exploitation
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-rds-post-exploitation/README.md
|
||||
{{#endref}}
|
||||
|
||||
### Persistencija
|
||||
### Persistence
|
||||
|
||||
{{#ref}}
|
||||
../aws-persistence/aws-rds-persistence/README.md
|
||||
{{#endref}}
|
||||
|
||||
### SQL Injekcija
|
||||
### SQL Injection
|
||||
|
||||
Postoje načini za pristup podacima iz DynamoDB koristeći **SQL sintaksu**, stoga su tipične **SQL injekcije takođe moguće**.
|
||||
Postoje načini da se pristupi DynamoDB podacima koristeći **SQL syntax**, stoga su tipične **SQL injections** takođe moguće.
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
|
||||
|
||||
@@ -12,11 +12,11 @@ Za više informacija pogledajte:
|
||||
|
||||
## Javni port
|
||||
|
||||
Moguće je dati javni pristup **bazi podataka sa interneta**. Napadač će i dalje morati da **zna korisničko ime i lozinku,** IAM access, ili neki **exploit** da bi ušao u bazu podataka.
|
||||
Moguće je dati javni pristup **bazi podataka sa interneta**. Napadač će i dalje morati da **zna korisničko ime i lozinku**, ima IAM pristup, ili iskoristi neki **exploit** da bi ušao u bazu podataka.
|
||||
|
||||
## Javni RDS Snapshots
|
||||
|
||||
AWS omogućava davanje **pristupa bilo kome za preuzimanje RDS snapshots**. Iz vašeg naloga možete veoma lako izlistati ove javne RDS snapshots:
|
||||
AWS omogućava davanje **pristupa bilo kome za preuzimanje RDS snapshots**. Možete vrlo lako izlistati ove javne RDS snapshots iz svog naloga:
|
||||
```bash
|
||||
# Public RDS snapshots
|
||||
aws rds describe-db-snapshots --include-public
|
||||
@@ -32,6 +32,19 @@ aws rds describe-db-snapshots --snapshot-type public [--region us-west-2]
|
||||
## Even if in the console appear as there are public snapshot it might be public
|
||||
## snapshots from other accounts used by the current account
|
||||
```
|
||||
## Javni RDS snapshot-ovi klastera
|
||||
|
||||
Slično, možete tražiti snapshot-ove klastera.
|
||||
```bash
|
||||
# Public RDS cluster snapshots
|
||||
aws rds describe-db-cluster-snapshots --include-public
|
||||
|
||||
## Search by account ID
|
||||
aws rds describe-db-cluster-snapshots --include-public --query 'DBClusterSnapshots[?contains(DBClusterSnapshotIdentifier, `284546856933:`) == `true`]'
|
||||
|
||||
# From the own account you can check if there is any public cluster snapshot with:
|
||||
aws rds describe-db-cluster-snapshots --snapshot-type public [--region us-west-2]
|
||||
```
|
||||
### Javni URL šablon
|
||||
```
|
||||
mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306
|
||||
|
||||
Reference in New Issue
Block a user