AWS - Relational Database (RDS) Enum

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.

  • KMS 키로 암호화된 AWS Key Management Service (KMS)를 통한 암호화 보장.

자격 증명

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

  • 비밀번호를 직접 지정

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

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

인증

3가지 유형의 인증 옵션이 있지만 마스터 비밀번호 사용은 항상 허용됩니다:

공용 액세스 및 VPC

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

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

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

암호화

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

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

그러나 암호화되지 않은 데이터베이스를 암호화할 수 있는 우회 방법이 있습니다. 암호화되지 않은 데이터베이스의 스냅샷을 생성하고, 해당 스냅샷의 암호화된 복사본을 생성하고, 그 암호화된 스냅샷을 사용하여 새 데이터베이스를 생성한 다음, 마지막으로 데이터베이스가 암호화됩니다.

투명 데이터 암호화(TDE)

RDS의 애플리케이션 수준의 암호화 기능과 함께, RDS는 데이터를 안전하게 보호하기 위한 추가 플랫폼 수준의 암호화 메커니즘도 지원합니다. 여기에는 Oracle 및 SQL Server에 대한 **투명 데이터 암호화(TDE)**가 포함됩니다. 그러나 TDE가 데이터를 안전하게 보호하는 데 도움이 되지만, 데이터베이스 성능에 영향을 미칠 수 있습니다. 이 성능 영향은 MySQL 암호화 기능이나 Microsoft Transact-SQL 암호화 기능과 함께 사용할 때 특히 두드러집니다.

TDE를 사용하려면 몇 가지 사전 단계가 필요합니다:

  1. 옵션 그룹 연결:

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

  • 그러나 옵션 그룹은 특정 데이터베이스 엔진 및 버전에서만 사용할 수 있다는 점에 유의해야 합니다.

  1. 옵션 그룹에 TDE 포함:

  • 옵션 그룹과 연결된 후, Oracle 투명 데이터 암호화 옵션을 해당 그룹에 포함해야 합니다.

  • 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

인증되지 않은 접근

AWS - RDS Unauthenticated Enum

권한 상승

AWS - RDS Privesc

포스트 익스플로잇

AWS - RDS Post Exploitation

지속성

AWS - RDS Persistence

SQL 인젝션

SQL 구문을 사용하여 DynamoDB 데이터에 접근할 수 있는 방법이 있으므로, 일반적인 SQL 인젝션도 가능합니다.

HackTricks 지원하기

Last updated