diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index ff475c327..331453f98 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -1,74 +1,74 @@ -# AWS - Relational Database (RDS) Enum +# AWS - Relasionele Databasis (RDS) Enumerasie {{#include ../../../banners/hacktricks-training.md}} ## Basiese Inligting -Die **Relational Database Service (RDS)** wat deur AWS aangebied word, is ontwerp om die ontplooiing, werking en skaal van 'n **relationele databasis in die wolk** te stroomlyn. Hierdie diens bied die voordele van kostedoeltreffendheid en skaalbaarheid terwyl dit arbeidsintensiewe take soos hardewareverskaffing, databasis konfigurasie, patching en rugsteun outomatiseer. +Die **Relational Database Service (RDS)** wat deur AWS aangebied word, is ontwerp om die ontplooiing, werking en skaal van 'n **relasionele databasis in die wolk** te vereenvoudig. Hierdie diens bied die voordele van koste-effektiwiteit en skaalbaarheid terwyl dit arbeidsintensiewe take soos hardware-provisioning, databasiskonfigurasie, patching en rugsteun outomatiseer. -AWS RDS ondersteun verskeie algemeen gebruikte relationele databasis enjin, insluitend MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server, en Amazon Aurora, met kompatibiliteit vir beide MySQL en PostgreSQL. +AWS RDS ondersteun verskeie wydgebruikte relasionele databasis-engines, insluitend MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server, en Amazon Aurora, met versoenbaarheid vir beide MySQL en PostgreSQL. Belangrike kenmerke van RDS sluit in: -- **Bestuur van databasisinstansies** is vereenvoudig. -- Skep van **lees replika's** om leesprestasie te verbeter. -- Konfigurasie van **multi-Availability Zone (AZ) ontplooiings** om hoë beskikbaarheid en failover meganismes te verseker. -- **Integrasie** met ander AWS dienste, soos: -- AWS Identity and Access Management (**IAM**) vir robuuste toegangbeheer. -- AWS **CloudWatch** vir omvattende monitering en metrieke. -- AWS Key Management Service (**KMS**) om versleuteling in rus te verseker. +- **Bestuur van databasisinstansies** word vereenvoudig. +- Skepping van **read replicas** om die leesprestasie te verbeter. +- Konfigurasie van **multi-Availability Zone (AZ) deployments** om hoë beskikbaarheid en failover-meganismes te verseker. +- **Integrasie** met ander AWS-dienste, soos: +- AWS Identity and Access Management (**IAM**) vir robuuste toegangsbeheer. +- AWS **CloudWatch** vir omvattende monitering en metrics. +- AWS Key Management Service (**KMS**) om enkripsie at rest te verseker. ## Kredensiale -Wanneer die DB-kluster geskep word, kan die meester **gebruikersnaam** geconfigureer word (**`admin`** as standaard). Om die wagwoord van hierdie gebruiker te genereer, kan jy: +Wanneer die DB-cluster geskep word, kan die meester **username** gekonfigureer word (standaard **`admin`**). Om die wagwoord van hierdie gebruiker te genereer kan jy: -- **Aangee** 'n **wagwoord** self -- RDS vra om dit **outomaties te genereer** -- RDS vra om dit in **AWS Secret Manager** te bestuur wat met 'n KMS-sleutel versleuteld is +- **'n wagwoord** self aandui +- RDS sê om dit **outomaties te genereer** +- RDS laat dit bestuur in **AWS Secret Manager** versleut met 'n KMS-sleutel
-### Verifikasie +### Outentisering -Daar is 3 tipes verifikasie opsies, maar die gebruik van die **meester wagwoord is altyd toegelaat**: +Daar is 3 soorte outentiseringsopsies, maar die gebruik van die **meesterwagwoord is altyd toegelaat**:
### Publieke Toegang & VPC -Standaard **word geen publieke toegang toegestaan** tot die databasisse nie, maar dit **kan toegestaan word**. Daarom sal slegs masjiene van dieselfde VPC toegang hê as die geselekteerde **veiligheidsgroep** (wat in EC2 SG gestoor word) dit toelaat. +Per verstek word **geen publieke toegang gegee** aan die databasisse nie, maar dit **kan gegee word**. Daarom sal per verstek slegs masjiene uit dieselfde VPC dit kan bereik indien die gekose **security group** (wat in EC2 SG gestoor word) dit toelaat. -In plaas daarvan om 'n DB-instansie bloot te stel, is dit moontlik om 'n **RDS Proxy** te skep wat die **schaalbaarheid** & **beskikbaarheid** van die DB-kluster **verbeter**. +In plaas daarvan om 'n DB-instansie bloot te stel, is dit moontlik om 'n **RDS Proxy** te skep wat die **skaalbaarheid** en **beskikbaarheid** van die DB-cluster **verbeter**. -Boonop kan die **databasispoort ook gewysig word**. +Verder kan die **databasispoort ook gemodifiseer word**. -### Versleuteling +### Enkripsie -**Versleuteling is standaard geaktiveer** met 'n AWS bestuurde sleutel (n CMK kan in plaas daarvan gekies word). +**Enkripsie is standaard geaktiveer** deur gebruik te maak van 'n AWS-beheerde sleutel ('n CMK kan in plaas daarvan gekies word). -Deur jou versleuteling te aktiveer, aktiveer jy **versleuteling in rus vir jou stoor, snapshots, lees replika's en jou rugsteun**. Sleutels om hierdie versleuteling te bestuur kan uitgereik word deur **KMS**.\ -Dit is nie moontlik om hierdie vlak van versleuteling by te voeg nadat jou databasis geskep is nie. **Dit moet tydens die skepping gedoen word**. +Deur enkripsie te aktiveer, skakel jy **enkripsie at rest vir jou stoorplek, snapshots, read replicas en jou rugsteun** in. Sleutels om hierdie enkripsie te bestuur kan uitgereik word deur **KMS** te gebruik.\ +Dit is nie moontlik om hierdie vlak van enkripsie by te voeg nadat jou databasis geskep is nie. **Dit moet tydens die skepproses gedoen word**. -Daar is egter 'n **ompad wat jou toelaat om 'n nie-versleutelde databasis soos volg te versleutel**. Jy kan 'n snapshot van jou nie-versleutelde databasis skep, 'n versleutelde kopie van daardie snapshot skep, daardie versleutelde snapshot gebruik om 'n nuwe databasis te skep, en dan, uiteindelik, sou jou databasis dan versleuteld wees. +Daar is egter 'n **workaround wat jou toelaat om 'n nie-versleutelde databasis te versleutel soos volg**. Jy kan 'n snapshot van jou nie-versleutelde databasis skep, 'n versleutelde kopie van daardie snapshot maak, daardie versleutelde snapshot gebruik om 'n nuwe databasis te skep, en uiteindelik sal jou databasis dan versleuteld wees. -#### Deursigtige Data Versleuteling (TDE) +#### Transparent Data Encryption (TDE) -Saam met die versleuteling vermoëns wat inherent aan RDS op die toepassingsvlak is, ondersteun RDS ook **addisionele platform-vlak versleuteling meganismes** om data in rus te beskerm. Dit sluit **Deursigtige Data Versleuteling (TDE)** vir Oracle en SQL Server in. Dit is egter belangrik om op te let dat terwyl TDE sekuriteit verbeter deur data in rus te versleutel, dit ook **databasisprestasie kan beïnvloed**. Hierdie prestasie-impak is veral merkbaar wanneer dit saam met MySQL-kryptografiese funksies of Microsoft Transact-SQL-kryptografiese funksies gebruik word. +Benewens die enkripsiefunksies wat inherent aan RDS op toepassingsvlak is, ondersteun RDS ook **addisionele platformvlak enkripsiemeganismes** om data at rest te beskerm. Dit sluit in **Transparent Data Encryption (TDE)** vir Oracle en SQL Server. Dit is egter belangrik om te let dat hoewel TDE die sekuriteit verbeter deur data at rest te enkripteer, dit ook die **databasisprestasie kan beïnvloed**. Hierdie prestasie-impak is veral merkbaar wanneer dit saam met MySQL-kriptografiese funksies of Microsoft Transact-SQL kriptografiese funksies gebruik word. -Om TDE te gebruik, is sekere voorlopige stappe nodig: +Om TDE te gebruik, is sekere voorlopige stappe vereis: -1. **Opsie Groep Assosiasie**: -- Die databasis moet met 'n opsiegroep geassosieer word. Opsiegroepe dien as houers vir instellings en funksies, wat databasisbestuur vergemaklik, insluitend sekuriteitsverbeterings. -- Dit is egter belangrik om op te let dat opsiegroepe slegs beskikbaar is vir spesifieke databasis enjin en weergawes. -2. **Insluiting van TDE in Opsie Groep**: -- Sodra dit met 'n opsiegroep geassosieer is, moet die Oracle Deursigtige Data Versleuteling opsie in daardie groep ingesluit word. -- Dit is noodsaaklik om te erken dat sodra die TDE opsie by 'n opsiegroep gevoeg is, dit 'n permanente kenmerk word en nie verwyder kan word nie. -3. **TDE Versleuteling Modusse**: -- TDE bied twee onderskeidbare versleuteling modusse: -- **TDE Tabelruimte Versleuteling**: Hierdie modus versleutel hele tabelle, wat 'n breër omvang van databeskydding bied. -- **TDE Kolom Versleuteling**: Hierdie modus fokus op die versleuteling van spesifieke, individuele elemente binne die databasis, wat meer granulaire beheer oor watter data versleutel word, moontlik maak. +1. **Option Group Association**: +- Die databasis moet geassosieer wees met 'n option group. Option groups dien as houers vir instellings en funksies, wat databasisbestuur, insluitend sekuriteitsverbeterings, vergemaklik. +- Dit is egter belangrik om te besef dat option groups slegs beskikbaar is vir spesifieke databasis-engines en weergawes. +2. **Inclusion of TDE in Option Group**: +- Sodra dit geassosieer is met 'n option group, moet die Oracle Transparent Data Encryption-opsie by daardie groep gevoeg word. +- Dit is noodsaaklik om te erken dat sodra die TDE-opsie by 'n option group gevoeg is, dit 'n permanente onderdeel word en nie verwyder kan word nie. +3. **TDE Encryption Modes**: +- TDE bied twee onderskeibare enkripsiemodusse: +- **TDE Tablespace Encryption**: Hierdie modus enkripteer hele tablespaces en bied 'n breër omvang van databeskerming. +- **TDE Column Encryption**: Hierdie modus fokus op die enkripsie van spesifieke, individuele elemente binne die databasis, wat meer gefyn beheer oor watter data enkripteer word, moontlik maak. -Om hierdie vereistes en die operasionele ingewikkeldhede van TDE te verstaan, is noodsaaklik vir effektiewe implementering en bestuur van versleuteling binne RDS, wat beide datasekuriteit en nakoming van nodige standaarde verseker. +Om hierdie vereistes en die operasionele ingewikkeldhede van TDE te verstaan, is noodsaaklik vir effektiewe implementering en bestuur van enkripsie binne RDS, wat beide databeskerming en nakoming van nodige standaarde verseker. ### Enumerasie ```bash @@ -80,6 +80,10 @@ aws rds describe-db-cluster-backtracks --db-cluster-identifier ## 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 --snapshot-identifier # 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 --db-snapshot-identifier --availability-zone us-west-2a @@ -105,33 +110,33 @@ aws rds describe-db-proxy-targets ## reset credentials of MasterUsername aws rds modify-db-instance --db-instance-identifier --master-user-password --apply-immediately ``` -### Ongeauthentiseerde Toegang +### Nie-geauthentiseerde Toegang {{#ref}} ../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md {{#endref}} -### Privilege Escalation +### Privesc {{#ref}} ../aws-privilege-escalation/aws-rds-privesc/README.md {{#endref}} -### Post Exploitatie +### Post Exploitation {{#ref}} ../aws-post-exploitation/aws-rds-post-exploitation/README.md {{#endref}} -### Volharding +### Persistence {{#ref}} ../aws-persistence/aws-rds-persistence/README.md {{#endref}} -### SQL Inbraak +### SQL Injection -Daar is maniere om toegang tot DynamoDB-data te verkry met **SQL-sintaks**, daarom is tipiese **SQL-inbrake ook moontlik**. +Daar is maniere om toegang tot DynamoDB data te kry met **SQL syntax**, daarom is tipiese **SQL injections are also possible**. {{#ref}} https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md index 762843241..52f9ca183 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md @@ -10,13 +10,13 @@ Vir meer inligting, sien: ../../aws-services/aws-relational-database-rds-enum.md {{#endref}} -## Publieke Poort +## Openbare Poort -Dit is moontlik om publieke toegang tot die **databasis vanaf die internet** te gee. Die aanvaller sal steeds die **gebruikersnaam en wagwoord** moet ken, IAM-toegang benodig, of 'n **exploit** moet hê om toegang tot die databasis te kry. +Dit is moontlik om publieke toegang tot die **databasis vanaf die internet** te gee. Die aanvaller sal steeds **die gebruikersnaam en wagwoord** moet weet, oor IAM-toegang moet beskik, of 'n **exploit** moet hê om die databasis binne te dring. -## Publieke RDS Snapshots +## Openbare RDS Snapshots -AWS laat toe om **toegang aan enigiemand te gee om RDS snapshots af te laai**. Jy kan hierdie publieke RDS snapshots baie maklik vanaf jou eie rekening lys: +AWS maak dit moontlik om **toegang aan enigiemand te gee om RDS snapshots af te laai**. Jy kan hierdie openbare RDS snapshots baie maklik vanaf jou eie rekening lys: ```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 ``` +## Openbare RDS Cluster Snapshots + +Net so kan jy na cluster snapshots soek +```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] +``` ### Publieke URL-sjabloon ``` mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306