Translated ['', 'src/pentesting-cloud/aws-security/aws-unauthenticated-e

This commit is contained in:
Translator
2025-11-01 11:05:52 +00:00
parent bff2aa2606
commit ebdd24771c
2 changed files with 65 additions and 47 deletions
@@ -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
<figure><img src="../../../images/image (144).png" alt=""><figcaption></figcaption></figure>
### 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**:
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
### 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 özelliklerieren 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-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,33 +110,33 @@ 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
```
### 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
@@ -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