Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela

This commit is contained in:
Translator
2025-11-01 11:04:09 +00:00
parent f1dc54b36d
commit 4d75f09978
2 changed files with 61 additions and 43 deletions

View File

@@ -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 genere**
- 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

View File

@@ -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