AWS - İlişkisel Veritabanı (RDS) Enum

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

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 kullanılan çeşitli ilişkisel veritabanı motorlarını destekler; MySQL ve PostgreSQL ile uyumluluğu bulunur.

RDS’in temel özellikleri şunlardır:

  • 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.
  • Verinin disk üzerinde şifrelenmesini sağlamak için AWS Key Management Service (KMS).

Kimlik Bilgileri

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:

  • 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

Üç 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 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 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.

Şifreleme

Şifreleme varsayılan olarak etkindir ve AWS yönetilen bir anahtar kullanılır (istenirse bir CMK seçilebilir).

Ş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ı ş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.

Transparent Data Encryption (TDE)

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 bazı ön adımlar gereklidir:

  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.
  1. 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.
  1. 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ı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.

Enumeration

# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
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?
aws rds describe-db-security-groups

## Find automated backups
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

# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public

# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
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

Unauthenticated Access

AWS - RDS Unauthenticated Enum

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistence

AWS - RDS Persistence

SQL Injection

DynamoDB verilerine SQL syntax ile erişmenin yolları vardır; bu nedenle tipik SQL injections de mümkündür.

SQL Injection - HackTricks

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin