A. 서버 & 서버리스 진단
1. AWS 침투 테스트 정책
침투 테스트 허용 서비스
- EC2, NAT Gateway 및 Elastic Load Balancer
- RDS
- CloudFront
- Aurora
- API Gateway
- Lambda 및 Lambda Edge 기능
- Lightsail 리소스
- Elastic Beanstalk 환경
침투 테스트 금지 서비스
- Route 53 Hosted Zones를 통한 DNS zone walking
- 서비스 거부(Dos), 분산 서비스 거부(DDoS)
- 포트 플러딩
- 프로토콜 플러딩
- 요청 플러딩(로그인 요청, API 요청)
2. AWS 침투 테스트 도구 정책
침투 테스트 도구
- AWS는 다양한 침투 테스트 도구의 존재 및 사용 가능성을 인정
- 보안 평가를 위한 도구 또는 서비스선택에 제약은 없음
- 알려진 취약점 버전을 찾기 위한 배너그래빙 및 쿼리 주입은 허용
- 그러나, 서비스 거부(DoS) 공격 또는 플러딩 공격은 제한
의무
- 침투 테스트를 위한 도구가 DoS 등 제한을 두는 공격을 수행하지 않는지 명확하게 확인
- 진단자 또는 사용하는 도구가 정책 위반 시 AWS 또는 고객에게 책임을 져야함
B. SSRF
1. EC2 SSRF 개요 및 사례
1-1. SSRF(Server-Side Request Forgery) 개요
Server Side에서 이루어지는 요청을 변조해 공격자가 의도한 대로 서버로 요청을 가게 하는 것
1-2. SSRF 공격 사례
- 2019년, 미국 은행 Capital One(캐피탈 원)에서 1억 600만 명의 고객 개인정보가 해킹
- AWS EC2 SSRF 공격 사례 - 이름, 주소, 사회보장번호, 생년월일, 연간 소득 등 유출
- EC2의 metadata에 SSRF 취약점을 이용하여 S3의 권한 획득 및 데이터 유출
1-3. 대응
- AWS는 설계된 대로 기능을 했으며, 해킹은 클라우드 서비스 자체 취약점이 아니라 WAF 설정을 잘못했기 때문에 발생한 것으로 결론
- 추후 AWS는 토큰을 포함하여 metadata를 요청할 수 있도록 옵션 추가
2. EC2 SSRF 시나리오
2-1. SSRF를 이용한 AWS EC2 메타테이터 탈취
- 원격 사용자 대신 서버가 명령어를 실행하도록 하여 자신의 요청에 대한 프록시로 취급하도록 함
- 내부망에 위치한 비공개 엔드포인트에 접근 가능
- AWS EC2 VM 만의 메타데이터 서비스(http://169.254.169.254)에 액세스 가능
- 메타데이터 URL은 VM IP주소, AWS 네트워크 내 배치, 호스트명을 HTTP API로 제공하여 클라우드 개발자에게 유용
3. EC2 SSRF 진단방법
3-1. SSRF를 이용한 AWS 자격증명 접근
SSRF와 EC2 metadata 엔드포인트의 액세스 권한을 결합하여 서버가 다음 URL을 요청
- http://169.254.169.254/iam/security-credentials
- http://169.254.169.254/latest/meta-data/iam/security-credentials/ISRM-WAF-Role
- 인증 정보와 토큰이 응답에 포함
- AWS CLI에 인증정보 등록 후 계정권한 획득
- 선언된 IAM 정책만큼 AWS 권한 사용 가능
4. Lambda SSRF 개요 및 시나리오
4-1. Lambda Runtime SSRF
- Lambda 함수가 동작할 때 런타임으로 가상환경에서 컨테이너 구성 후 동작
- 환경 변수로 IAM 자격 증명과 설정 값이 적용됨
5. Lambda SSRF 진단방법
file:// 스키마를 통해 접근 시 파일 내용 유출 여부 확인
구분 | 내용 |
설명 | Lambda에 자원 요청을 보내 메타데이터를 읽을 수 있는 취약점 |
판단기준 | [취약] 내부 자원 접근 시도 시 파일의 내용이 출력 [양호] 내부 자원 접근 시도 시 에러가 반환 |
영향 | 취약점을 통해 획득한 인증 정보의 권한으로 접근이 불가능한 클라우드 서비스의 악용 가능 |
6. 보안대책
6-1. EC2 인스턴스 메타데이터 보안 설정
- 비공개 VPC에서 동작 중인 EC2 인스턴스에 대해 공개 IP를 설정하지 않도록 함
- 인스턴스 메타데이터에 접근하는 옵션 비활성화
- "aws ec2 modify-instance-metadata-options -instance-id [id] -http-endpoint disabled"
- 인스턴스 메타데이터 서비스 액세스 제한 설정
- Iptabels를 이용한 제한(169.254.169.254 ip에 대한 접근 제어 설정)
- PF 또는 IPFW를 사용하여 액세스 제한 Black List 검증
6-2. 사용자 입력 값 검증
- Whitelist 방식의 Filtering
- 입력한 데이터에 대해 허용할 List(URL, Scheme)에 속하는 경우에만 처리
- 지정된 목록에 속하지 않는 경우 에러페이지 응답
- Blacklist 방식의 Filtering
- 지정된 목록에 속하는 입력값 요청 시 에러페이지 응답
- ex) Private IP, Lookback 주소, 불필요한 schema(sftp://, file://), 불필요 특수문자(%0a
C. SQL Injection
1. 개요
1-1. SQL Injection 이란?
- 임의의 SQL 구문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 유도
- OWASP TOP10 중 첫 번째 공격, 위험도가 높음
1-2. SQL Injection 공격 목적 및 영향
- 인증 우회
- DB 데이터 조작 및 유출
- 시스템 명령 실행
1-3. SQL Injecion 종류
- Error Based SQL Injection
- Blind SQL Injection
- Union SQL Injection
2. AWS 데이터베이스 서비스
2-1. RDS(Relational Database Service)
- 관계형 데이터베이스를 설정, 운영 확장
- 6개의 데이터베이스 엔진 중에서 선택 가능
- 기존 데이터베이스를 RDS로 마이그레이션, 복제 가능
2-2. NoSQL(DynamoDB)
- 특정 데이터 모델에 대해 목적에 맞추어 구축되는 데이터베이스
- AWS는 키(key), 값(value) 형태로 구성된 DynamoDB 제공
3. RDS SQL Injection 개요
RDS SQL Injection
- 상용 SQL 엔진 - 기존의 SQL 취약성을 그대로 가져옴
- 인스턴스, 서버리스 선택 가능
공격 예시) 쿼리 조건(where) 암호 검사 무력화
정상 로그인 | ID : myuser1 password : mypassword1 |
SELECT * FROM users WHERE username = 'myuser1' AND password = 'mypassword1'
↓
SQL Injection | ID : myuser1'-- password : 1234 |
SELECT * FROM users WHERE username = 'myuser1'-- ' AND password = '1234
4. RDS SQL Injecton 실습
4-1. Blind SQL Injection
- 쿼리 구문을 토해 참과 거짓 구분이 가능함을 확인
- substring()등 문자열 함수 이용 데이터 추출
- 실습사이트는 현재 보안 패치 적용되어 있음
4-2. RDS SQL Injection
- 기존 SQL 엔진을 사용/호환성 지원
- 취약성 또한 동일하게 발생함을 확인
- 웹 취약점 진단 방법으로 진단 가능
4-3. 실습과 실제 진단 시 유의사항
- 조건절 검사 시 OR 구문 사용 유의
- 주석 구문 사용 유의
- 시스템 가용성 저해 우려
- 요청 당 요금이 청구되는 람다함수 특성 이해 필요
5. 보안 대책
5-1. RDS 인스턴스 보안
데이터 암호화 설정
5-2. 애플리케이션 레벨 예방
- Prepared Statement 사용
- 입력 값에 대한 검증
- Error Message 노출 금지
- AWS WAF
'AWS Cloud > Cloud Hacking' 카테고리의 다른 글
AWS Cloud Hacking - Chapter 5. S3 및 불필요 리소스 진단 (0) | 2024.05.28 |
---|---|
AWS Cloud Hacking - Chapter 4. 서버 & 서버리스 진단 Part 2 (0) | 2024.05.28 |
AWS Cloud Hacking - Chapter 3. 클라우드 웹 호스팅 아키텍처 (0) | 2024.05.27 |
AWS Cloud Hacking - Chaptor 2. 사용자 관리 (0) | 2024.05.27 |
AWS Cloud Hacking - Chapter 1. Cloud & AWS 기초 지식 (0) | 2024.05.27 |