From ebdd24771cecf0195f8c49612f017c63d6eaa84e Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 1 Nov 2025 11:05:52 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-unauthenticated-e --- .../aws-relational-database-rds-enum.md | 89 ++++++++++--------- .../aws-rds-unauthenticated-enum/README.md | 23 +++-- 2 files changed, 65 insertions(+), 47 deletions(-) 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 3189ba51e..0be11ed50 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 @@ -4,73 +4,73 @@ ## Temel Bilgiler -AWS tarafından sunulan **İlişkisel Veritabanı Servisi (RDS)**, **bulutta bir ilişkisel veritabanının** dağıtımını, işletimini ve ölçeklenmesini kolaylaştırmak için tasarlanmıştır. Bu hizmet, donanım sağlama, veritabanı yapılandırması, yamanın uygulanması ve yedekleme gibi iş gücü yoğun görevleri otomatikleştirirken maliyet verimliliği ve ölçeklenebilirlik avantajları sunar. +AWS tarafından sunulan **Relational Database Service (RDS)**, bulutta bir **ilişkisel veritabanının** konuşlandırılmasını, işletilmesini ve ölçeklendirilmesini kolaylaştırmak için tasarlanmıştır. Bu hizmet; donanım temini, veritabanı yapılandırması, patchleme ve yedeklemeler gibi emek yoğun görevleri otomatikleştirirken maliyet etkinliği ve ölçeklenebilirlik avantajı sağlar. -AWS RDS, MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server ve Amazon Aurora gibi yaygın olarak kullanılan çeşitli ilişkisel veritabanı motorlarını destekler ve hem MySQL hem de PostgreSQL ile uyumludur. +AWS RDS, MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server ve Amazon Aurora gibi yaygın kullanılan çeşitli ilişkisel veritabanı motorlarını destekler; MySQL ve PostgreSQL ile uyumluluğu bulunur. -RDS'nin ana özellikleri şunlardır: +RDS'in temel özellikleri şunlardır: -- **Veritabanı örneklerinin yönetimi** basitleştirilmiştir. -- Okuma performansını artırmak için **okuma kopyaları** oluşturma. -- Yüksek kullanılabilirlik ve failover mekanizmalarını sağlamak için **çoklu Erişim Alanı (AZ) dağıtımları** yapılandırma. -- Diğer AWS hizmetleri ile **entegrasyon**, örneğin: -- Güçlü erişim kontrolü için AWS Kimlik ve Erişim Yönetimi (**IAM**). +- **Veritabanı instance yönetimi** basitleştirilir. +- **Okuma performansını artırmak için read replica'lar oluşturma.** +- Yüksek kullanılabilirlik ve failover mekanizmalarını sağlamak için **multi-Availability Zone (AZ) dağıtımlarının yapılandırılması.** +- Diğer AWS hizmetleriyle **entegrasyon**, örneğin: +- Güçlü erişim kontrolü için AWS Identity and Access Management (**IAM**). - Kapsamlı izleme ve metrikler için AWS **CloudWatch**. -- Dinlenme sırasında şifrelemeyi sağlamak için AWS Anahtar Yönetim Servisi (**KMS**). +- Verinin disk üzerinde şifrelenmesini sağlamak için AWS Key Management Service (**KMS**). ## Kimlik Bilgileri -DB kümesi oluşturulurken ana **kullanıcı adı** yapılandırılabilir (**varsayılan olarak `admin`**). Bu kullanıcının şifresini oluşturmak için: +DB kümesi oluşturulurken master **kullanıcı adı** yapılandırılabilir (varsayılan olarak **`admin`**). Bu kullanıcının parolasını oluşturmak için şunları yapabilirsiniz: -- **Kendiniz bir şifre belirtin** -- RDS'ye **otomatik olarak oluşturmasını** söyleyin -- RDS'ye **AWS Secret Manager**'da KMS anahtarı ile şifrelenmiş olarak yönetmesini söyleyin +- Parolayı kendiniz **belirtme** +- RDS'e parolayı **otomatik oluşturmasını** söyleme +- RDS'e parolayı bir KMS anahtarı ile şifrelenmiş olarak **AWS Secret Manager**'da yönetmesini söyleme
### Kimlik Doğrulama -3 tür kimlik doğrulama seçeneği vardır, ancak **ana şifre her zaman kullanılabilir**: +Üç tür kimlik doğrulama seçeneği vardır, ancak **ana parola kullanımı her zaman izinlidir**:
### Genel Erişim & VPC -Varsayılan olarak veritabanlarına **herhangi bir genel erişim verilmez**, ancak **verilebilir**. Bu nedenle, varsayılan olarak yalnızca aynı VPC'den makineler, seçilen **güvenlik grubu** (EC2 SG'de saklanır) izin veriyorsa buna erişebilecektir. +Varsayılan olarak veritabanlarına **herhangi bir genel erişim verilmez**, ancak erişim **verilebilir**. Bu nedenle varsayılan olarak yalnızca aynı VPC içindeki makineler, seçilen **security group** (EC2 SG içinde saklanır) izin veriyorsa erişebilir. -Bir DB örneğini açığa çıkarmak yerine, DB kümesinin **ölçeklenebilirliğini** ve **kullanılabilirliğini artıran** bir **RDS Proxy** oluşturmak mümkündür. +Bir DB instance'ını açığa çıkarmak yerine, DB kümesinin **ölçeklenebilirliğini** ve **kullanılabilirliğini** **iyileştiren** bir **RDS Proxy** oluşturmak mümkündür. -Ayrıca, **veritabanı portu da değiştirilebilir**. +Ayrıca **veritabanı portu da değiştirilebilir**. ### Şifreleme -**Şifreleme varsayılan olarak etkindir** ve AWS yönetilen bir anahtar kullanır (bir CMK yerine seçilebilir). +**Şifreleme varsayılan olarak etkindir** ve AWS yönetilen bir anahtar kullanılır (istenirse bir CMK seçilebilir). -Şifrelemenizi etkinleştirerek, **depolama, anlık görüntüler, okuma kopyaları ve yedekleriniz için dinlenme sırasında şifrelemeyi** etkinleştiriyorsunuz. Bu şifrelemeyi yönetmek için anahtarlar **KMS** kullanılarak verilebilir.\ -Veritabanınız oluşturulduktan sonra bu düzeyde bir şifreleme eklemek mümkün değildir. **Bu, oluşturulması sırasında yapılmalıdır**. +Şifrelemeyi etkinleştirerek, **depolama, snapshot'lar, read replica'lar ve yedekler için at-rest şifrelemesini** etkinleştirmiş olursunuz. Bu şifrelemeyi yönetmek için anahtarlar **KMS** kullanılarak verilebilir.\ +Veritabanınız oluşturulduktan sonra bu şifreleme düzeyi eklemek mümkün değildir. **Oluşturma sırasında yapılmalıdır**. -Ancak, **şifrelenmemiş bir veritabanını şifrelemek için bir geçici çözüm** vardır. Şifrelenmemiş veritabanınızın bir anlık görüntüsünü oluşturabilir, o anlık görüntünün şifrelenmiş bir kopyasını oluşturabilir, bu şifrelenmiş anlık görüntüyü kullanarak yeni bir veritabanı oluşturabilir ve sonunda veritabanınız şifrelenmiş olur. +Ancak, **şifrelenmemiş bir veritabanını şu şekilde şifrelemenizi sağlayan bir çözüm** vardır. Şifrelenmemiş veritabanınızın bir snapshot'unu oluşturabilir, o snapshot'un şifrelenmiş bir kopyasını oluşturabilir, bu şifreli snapshot'u yeni bir veritabanı oluşturmak için kullanabilir ve sonuçta yeni veritabanınız şifrelenmiş olur. -#### Şeffaf Veri Şifrelemesi (TDE) +#### Transparent Data Encryption (TDE) -RDS'nin uygulama düzeyindeki şifreleme yeteneklerine ek olarak, RDS ayrıca dinlenme halindeki verileri korumak için **ek platform düzeyi şifreleme mekanizmalarını** destekler. Bu, Oracle ve SQL Server için **Şeffaf Veri Şifrelemesi (TDE)**'yi içerir. Ancak, TDE'nin dinlenme halindeki verileri şifreleyerek güvenliği artırdığına dikkat etmek önemlidir, bu aynı zamanda **veritabanı performansını etkileyebilir**. Bu performans etkisi, MySQL kriptografik işlevleri veya Microsoft Transact-SQL kriptografik işlevleri ile birlikte kullanıldığında özellikle belirgindir. +RDS'nin uygulama düzeyindeki şifreleme yeteneklerinin yanı sıra, RDS aynı zamanda verinin disk üzerinde korunması için **ek platform düzeyi şifreleme mekanizmalarını** destekler. Bu, Oracle ve SQL Server için **Transparent Data Encryption (TDE)**'yi içerir. Ancak, TDE veriyi disk üzerinde şifreleyerek güvenliği artırırken **veritabanı performansını etkileyebileceğini** belirtmek önemlidir. Bu performans etkisi, özellikle MySQL kriptografik fonksiyonları veya Microsoft Transact-SQL kriptografik fonksiyonları ile birlikte kullanıldığında fark edilir hale gelir. -TDE'yi kullanmak için belirli ön adımlar gereklidir: +TDE'yi kullanmak için bazı ön adımlar gereklidir: -1. **Seçenek Grubu İlişkilendirmesi**: -- Veritabanı bir seçenek grubuna ilişkilendirilmelidir. Seçenek grupları, ayarları ve özellikleri içeren konteynerler olarak işlev görerek güvenlik iyileştirmeleri de dahil olmak üzere veritabanı yönetimini kolaylaştırır. -- Ancak, seçenek gruplarının yalnızca belirli veritabanı motorları ve sürümleri için mevcut olduğunu belirtmek önemlidir. -2. **Seçenek Grubunda TDE'nin Dahil Edilmesi**: -- Bir seçenek grubuna ilişkilendirildikten sonra, Oracle Şeffaf Veri Şifrelemesi seçeneği o gruba dahil edilmelidir. -- TDE seçeneği bir seçenek grubuna eklendikten sonra, kalıcı bir parça haline geldiğini ve çıkarılamayacağını kabul etmek önemlidir. -3. **TDE Şifreleme Modları**: -- TDE, iki farklı şifreleme modu sunar: -- **TDE Tablosu Alanı Şifrelemesi**: Bu mod, tüm tabloları şifreler ve daha geniş bir veri koruma kapsamı sağlar. -- **TDE Sütun Şifrelemesi**: Bu mod, veritabanındaki belirli, bireysel öğeleri şifrelemeye odaklanır ve hangi verilerin şifreleneceği üzerinde daha ayrıntılı kontrol sağlar. +1. **Option Group Association**: +- Veritabanının bir option group ile ilişkilendirilmesi gerekir. Option group'lar, ayarlar ve özellikler için konteyner görevi görerek veritabanı yönetimini ve güvenlik iyileştirmelerini kolaylaştırır. +- Ancak, option group'ların yalnızca belirli veritabanı motorları ve sürümleri için mevcut olduğunu belirtmek önemlidir. +2. **Inclusion of TDE in Option Group**: +- Bir option group ile ilişkilendirildikten sonra, Oracle Transparent Data Encryption seçeneğinin o gruba eklenmesi gerekir. +- TDE seçeneği bir option group'a eklendikten sonra bunun kalıcı hale geldiğini ve kaldırılamayacağını bilmek önemlidir. +3. **TDE Encryption Modes**: +- TDE iki farklı şifreleme modu sunar: +- **TDE Tablespace Encryption**: Bu mod tüm tabloları şifreler ve daha geniş kapsamlı veri koruması sağlar. +- **TDE Column Encryption**: Bu mod, veritabanı içindeki belirli, tekil öğelerin şifrelenmesine odaklanır ve hangi verilerin şifreleneceği üzerinde daha ayrıntılı kontrol sağlar. -Bu ön koşulları ve TDE'nin operasyonel karmaşıklıklarını anlamak, RDS içinde şifrelemeyi etkili bir şekilde uygulamak ve yönetmek için kritik öneme sahiptir ve hem veri güvenliğini hem de gerekli standartlara uyumu sağlar. +Bu ön koşulların ve TDE'nin operasyonel ayrıntılarının anlaşılması, RDS içinde şifrelemeyi etkin şekilde uygulamak ve yönetmek için, veri güvenliğini sağlamak ve gerekli standartlara uyumluluğu temin etmek açısından kritiktir. -### Sayım +### Enumeration ```bash # Clusters info ## Get Endpoints, username, port, iam auth enabled, attached roles, SG @@ -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 ``` -### Kimlik Doğrulama Olmadan Erişim +### Unauthenticated Access {{#ref}} ../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md {{#endref}} -### Yetki Yükseltme +### Privesc {{#ref}} ../aws-privilege-escalation/aws-rds-privesc/README.md {{#endref}} -### İstismar Sonrası +### Post Exploitation {{#ref}} ../aws-post-exploitation/aws-rds-post-exploitation/README.md {{#endref}} -### Süreklilik +### Persistence {{#ref}} ../aws-persistence/aws-rds-persistence/README.md {{#endref}} -### SQL Enjeksiyonu +### SQL Injection -DynamoDB verilerine **SQL sözdizimi** ile erişim yolları vardır, bu nedenle, tipik **SQL enjeksiyonları da mümkündür**. +DynamoDB verilerine **SQL syntax** ile erişmenin yolları vardır; bu nedenle tipik **SQL injections** de mümkündür. {{#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 cddcfadaa..f3b3719ea 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 @@ Daha fazla bilgi için bakınız: ../../aws-services/aws-relational-database-rds-enum.md {{#endref}} -## Genel Port +## Açık Port -İnternetten veritabanına genel erişim vermek mümkündür. Saldırganın yine de veritabanına girebilmek için **kullanıcı adı ve parola**, IAM erişimi veya bir **exploit** bilmesi gerekir. +Halka açık olarak **internet üzerinden veritabanına** erişim vermek mümkündür. Saldırganın yine de veritabanına girebilmesi için **kullanıcı adını ve şifreyi bilmesi,** IAM erişimi veya bir **exploit**'e ihtiyacı olacaktır. -## Herkese Açık RDS Snapshots +## Herkese Açık RDS Snapshot'ları -AWS, RDS snapshot'larını indirmek için **herkese erişim verme** imkanı sağlar. Bu herkese açık RDS snapshots'larını kendi hesabınızdan çok kolay listeleyebilirsiniz: +AWS, **herkesin RDS snapshot'larını indirebilmesine** izin verir. Bu herkese açık RDS snapshot'larını kendi hesabınızdan çok kolay listeleyebilirsiniz: ```bash # Public RDS snapshots aws rds describe-db-snapshots --include-public @@ -32,7 +32,20 @@ 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 ``` -### Genel URL şablonu +## Herkese Açık RDS Küme Anlık Görüntüleri + +Benzer şekilde, küme anlık görüntülerini de arayabilirsiniz. +```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] +``` +### Herkese açık URL şablonu ``` mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306 postgres://{user_provided}.{random_id}.{region}.rds.amazonaws.com:5432