AWS - Relational Database (RDS) 열거
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
AWS에서 제공하는 **Relational Database Service (RDS)**는 클라우드에서의 관계형 데이터베이스 배포, 운영 및 확장을 간소화하도록 설계되었습니다. 이 서비스는 비용 효율성과 확장성의 이점을 제공하면서 하드웨어 프로비저닝, 데이터베이스 구성, 패치 및 백업과 같은 수작업이 많은 작업을 자동화합니다.
AWS RDS는 MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server, Amazon Aurora 등 다양한 널리 사용되는 관계형 데이터베이스 엔진을 지원하며 MySQL 및 PostgreSQL과의 호환성을 제공합니다.
RDS의 주요 기능은 다음과 같습니다:
- 데이터베이스 인스턴스 관리가 간소화됩니다.
- 읽기 복제본(read replicas) 생성을 통해 읽기 성능을 향상시킬 수 있습니다.
- multi-Availability Zone (AZ) deployments 구성으로 고가용성과 장애 조치 메커니즘을 보장합니다.
- 다음과 같은 AWS 서비스와의 통합:
- AWS Identity and Access Management (IAM)를 통한 강력한 액세스 제어.
- AWS CloudWatch를 통한 포괄적인 모니터링 및 메트릭.
- AWS Key Management Service (KMS)를 통한 저장 암호화 관리.
자격 증명
DB 클러스터를 생성할 때 마스터 username은 구성할 수 있으며 (기본값은 admin) 이 사용자 비밀번호를 생성하는 방법은 다음과 같습니다:
- 직접 비밀번호를 지정합니다.
- RDS에게 자동 생성하도록 요청합니다.
- RDS가 AWS Secret Manager에서 KMS 키로 암호화하여 관리하도록 합니다.
.png)
인증
인증 옵션은 3가지가 있으며, 마스터 암호는 항상 허용됩니다:
.png)
퍼블릭 액세스 및 VPC
기본적으로 데이터베이스에는 퍼블릭 액세스가 허용되지 않습니다, 그러나 허용될 수 있습니다. 따라서 기본적으로 선택한 security group(EC2 SG에 저장됨)이 허용하는 경우에만 동일한 VPC의 머신들만 접근할 수 있습니다.
DB 인스턴스를 노출하는 대신 DB 클러스터의 scalability와 availability를 향상시키는 RDS Proxy를 생성할 수 있습니다.
또한 데이터베이스 포트는 수정 가능합니다.
암호화
암호화는 기본적으로 활성화되어 있으며 AWS 관리형 키를 사용합니다(대신 CMK를 선택할 수 있음).
암호화를 활성화하면 저장소, 스냅샷, 읽기 복제본 및 백업에 대해 **저장 시 암호화(encryption at rest)**가 적용됩니다. 이 암호화를 관리하는 키는 KMS를 사용하여 발급할 수 있습니다.
데이터베이스가 생성된 후에는 이 수준의 암호화를 추가할 수 없습니다. 생성 단계에서 설정해야 합니다.
하지만 암호화되지 않은 데이터베이스를 암호화하는 우회 방법이 있습니다. 암호화되지 않은 데이터베이스의 스냅샷을 생성한 다음, 해당 스냅샷의 암호화된 복사본을 생성하고, 그 암호화된 스냅샷을 사용해 새 데이터베이스를 생성하면 최종적으로 데이터베이스가 암호화된 상태가 됩니다.
Transparent Data Encryption (TDE)
RDS의 애플리케이션 수준 암호화 기능 외에도 플랫폼 수준에서 데이터를 보호하기 위한 추가 암호화 메커니즘을 지원합니다. 여기에는 Oracle 및 SQL Server용 **Transparent Data Encryption (TDE)**가 포함됩니다. 그러나 TDE는 저장 중인 데이터를 암호화하여 보안을 강화하는 반면, 데이터베이스 성능에 영향을 미칠 수 있다는 점을 유의해야 합니다. 이 성능 영향은 특히 MySQL 암호화 함수 또는 Microsoft Transact-SQL 암호화 함수와 함께 사용할 때 더 두드러집니다.
TDE를 사용하려면 다음과 같은 사전 단계가 필요합니다:
- 옵션 그룹 연관(Option Group Association):
- 데이터베이스는 옵션 그룹과 연관되어야 합니다. 옵션 그룹은 설정 및 기능을 담는 컨테이너 역할을 하며 데이터베이스 관리 및 보안 향상을 돕습니다.
- 다만 옵션 그룹은 특정 데이터베이스 엔진 및 버전에만 제공된다는 점을 유의해야 합니다.
- 옵션 그룹에 TDE 포함:
- 옵션 그룹과 연관한 후 Oracle Transparent Data Encryption 옵션을 해당 그룹에 포함해야 합니다.
- TDE 옵션이 옵션 그룹에 추가되면 영구적으로 남게 되며 제거할 수 없다는 점을 인지해야 합니다.
- TDE 암호화 모드:
- TDE는 두 가지 암호화 모드를 제공합니다:
- TDE Tablespace Encryption: 전체 테이블스페이스를 암호화하여 더 넓은 범위의 데이터 보호를 제공합니다.
- TDE Column Encryption: 데이터베이스 내 특정 개별 요소를 암호화하여 보다 세분화된 제어를 허용합니다.
이러한 전제 조건과 TDE의 운영적 세부사항을 이해하는 것은 RDS 내에서 암호화를 효과적으로 구현하고 관리하여 데이터 보안 및 규정 준수를 보장하는 데 중요합니다.
열거
# 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
인증되지 않은 액세스
AWS - RDS Unauthenticated Enum
Privesc
Post Exploitation
Persistence
SQL Injection
DynamoDB 데이터에 SQL syntax로 접근할 수 있는 방법이 있으므로, 일반적인 SQL injections도 가능합니다.
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
HackTricks Cloud

