본문 바로가기

Education/[AWS] Cloud Hacking

[AWS] Chapter4. 서버&서버리스 진단 - 2

3. SQL Injection

01. 개요

SQL Injection
임의의 SQL 구문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 유도
OWASP TOP10 중 첫 번째 공격, 위험도가 높음

SQL Injection 공격 목적 및 영향
- 인증 우회
- DB 데이터 조작 및 유출
- 시스템 명령 실행

SQL Injecion 종류
- Error Based SQL Injection
- Blind SQL Injection
- Union SQL Injection

 

02. AWS 데이터베이스 서비스

AWS에서 제공하는 데이터베이스 서비스 종류

RDS(Relational Database Service)
- 관계형 데이터베이스를 설정, 운영 확장
- 6개의 데이터베이스 엔진 중에서 선택 가능
- 기존 데이터베이스를 RDS로 마이그레이션, 복제 가능

NoSQL(DynamoDB)
- 특정 데이터 모델에 대해 목적에 맞추어 구축되는 데이터베이스
- AWS는 키(key), 값(value) 형태로 구성된 DynamoDB 제공

 

 

03. 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'

 

04. RDS SQL Injecton 실습

Blind SQL Injection
- 쿼리 구문을 토해 참과 거짓 구분이 가능함을 확인
- substring()등 문자열 함수 이용 데이터 추출
- 실습사이트는 현재 보안 패치 적용되어 있음

RDS SQL Injection
- 기존 SQL 엔진을 사용/호환성 지원
- 취약성 또한 동일하게 발생함을 확인
- 웹 취약점 진단 방법으로 진단 가능

실습과 실제 진단 시 유의사항
- 조건절 검사 시 OR 구문 사용 유의
- 주석 구문 사용 유의
- 시스템 가용성 저해 우려
- 요청 당 요금이 청구되는 람다함수 특성 이해 필요

 

05. 보안 대책

SQL Injection 보안 대책
1) RDS 인스턴스 보안 
  -> 데이터 암호화 설정

2) 애플리케이션 레벨 예방 
- Prepared Statement 사용
- 입력 값에 대한 검증 
- Error Message 노출 금지
- AWS WAF