AWS - Relational Database (RDS) Enum

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로**부터 **히어로**까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

기본 정보

AWS에서 제공하는 **관계형 데이터베이스 서비스 (RDS)**는 클라우드에서 관계형 데이터베이스의 배포, 운영 및 확장을 간소화하기 위해 설계되었습니다. 이 서비스는 하드웨어 프로비저닝, 데이터베이스 구성, 패치 및 백업과 같은 노동 집약적인 작업을 자동화하면서 비용 효율성확장성의 장점을 제공합니다.

AWS RDS는 MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server 및 Amazon Aurora와 같은 다양한 널리 사용되는 관계형 데이터베이스 엔진을 지원하며 MySQL 및 PostgreSQL 모두와 호환됩니다.

RDS의 주요 기능은 다음과 같습니다:

  • 데이터베이스 인스턴스 관리가 간소화됩니다.

  • 읽기 레플리카를 생성하여 읽기 성능을 향상시킵니다.

  • 다중 가용 영역 (AZ) 배포를 구성하여 고가용성 및 장애 조치 메커니즘을 보장합니다.

  • 다른 AWS 서비스와의 통합, 예를 들어:

  • 견고한 액세스 제어를 위한 AWS Identity and Access Management (IAM).

  • 포괄적인 모니터링 및 메트릭을 위한 AWS CloudWatch.

  • 안전한 암호화를 보장하기 위한 AWS Key Management Service (KMS).

자격 증명

DB 클러스터를 생성할 때 마스터 사용자 이름을 구성할 수 있습니다 (기본값은 admin). 이 사용자의 암호를 생성하려면 다음을 수행할 수 있습니다:

  • 직접 암호를 지정

  • RDS에게 자동 생성하도록 지시

  • KMS 키로 암호화된 AWS Secret Manager에서 관리하도록 RDS에게 지시

인증

3가지 유형의 인증 옵션이 있지만 마스터 암호를 사용하는 것은 항상 허용됩니다:

공개 액세스 및 VPC

기본적으로 데이터베이스에는 공개 액세스가 허용되지 않습니다, 그러나 허용될 수 있습니다. 따라서 기본적으로 동일한 VPC의 기기만 액세스할 수 있습니다. 선택한 보안 그룹 (EC2 SG에 저장됨)이 허용하는 경우에만 액세스할 수 있습니다.

DB 인스턴스를 노출하는 대신 RDS Proxy를 생성하여 DB 클러스터의 확장성가용성을 향상시킬 수 있습니다.

또한 데이터베이스 포트를 수정할 수도 있습니다.

암호화

암호화는 기본적으로 활성화되어 있으며 AWS 관리형 키를 사용합니다 (대신 CMK를 선택할 수 있음).

암호화를 활성화하면 저장소, 스냅샷, 읽기 레플리카 및 백업에 대한 정지 상태 암호화가 활성화됩니다. 이 암호화를 관리하기 위한 키는 KMS를 사용하여 발급할 수 있습니다. 이 수준의 암호화를 데이터베이스가 생성된 후에 추가할 수 없습니다. 데이터베이스 생성 중에 수행해야 합니다.

그러나 다음과 같이 암호화되지 않은 데이터베이스를 암호화할 수 있는 회피 방법이 있습니다. 암호화되지 않은 데이터베이스의 스냅샷을 생성하고 해당 스냅샷의 암호화된 사본을 생성한 후 해당 암호화된 스냅샷을 사용하여 새 데이터베이스를 생성하면 데이터베이스가 암호화됩니다.

투명한 데이터 암호화 (TDE)

RDS의 응용 프로그램 수준에서 제공되는 암호화 기능 외에도 RDS는 데이터를 안전하게 보호하기 위한 추가 플랫폼 수준의 암호화 메커니즘을 지원합니다. 이는 Oracle 및 SQL Server용 **투명한 데이터 암호화 (TDE)**를 포함합니다. 그러나 데이터를 안전하게 암호화하여 보안을 강화하는 TDE는 데이터베이스 성능에 영향을 줄 수 있음을 명심해야 합니다. 특히 MySQL 암호화 함수 또는 Microsoft Transact-SQL 암호화 함수와 함께 사용할 때 이러한 성능 영향이 특히 두드러집니다.

TDE를 활용하려면 다음과 같은 초기 단계가 필요합니다:

  1. 옵션 그룹 연결:

  • 데이터베이스는 옵션 그룹과 연결되어야 합니다. 옵션 그룹은 보안 향상을 포함한 데이터베이스 관리를 용이하게 하는 설정 및 기능의 컨테이너로 작용합니다.

  • 그러나 옵션 그룹은 특정 데이터베이스 엔진 및 버전에만 사용할 수 있음을 인식하는 것이 중요합니다.

  1. 옵션 그룹에 TDE 포함:

  • 옵션 그룹과 연결된 후 Oracle Transparent Data Encryption 옵션을 해당 그룹에 포함해야 합니다.

  • TDE 옵션이 옵션 그룹에 추가되면 영구적인 구성 요소가 되어 제거할 수 없음을 인식하는 것이 중요합니다.

  1. TDE 암호화 모드:

  • TDE에는 두 가지 다른 암호화 모드가 있습니다:

  • TDE 테이블스페이스 암호화: 이 모드는 전체 테이블을 암호화하여 데이터 보호 범위를 확대합니다.

  • TDE 열 암호화: 이 모드는 데이터베이스 내의 특정 개별 요소를 암호화하는 데 중점을 두어 데이터가 암호화되는 범위를 더 세밀하게 제어할 수 있습니다.

이러한 선행 조건과 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

# 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

인증되지 않은 액세스

pageAWS - RDS Unauthenticated Enum

권한 상승

pageAWS - RDS Privesc

사후 공격

pageAWS - RDS Post Exploitation

지속성

pageAWS - RDS Persistence

SQL Injection

SQL 구문을 사용하여 DynamoDB 데이터에 액세스하는 방법이 있으므로, 전형적인 SQL 인젝션도 가능합니다.

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 전문가로 배우세요!

HackTricks를 지원하는 다른 방법:

最終更新