mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-unauthenticated-e
This commit is contained in:
+47
-42
@@ -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 ö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-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
|
||||
|
||||
+18
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user