[AWSGoat module-1] XSS & SQL Injection
XSS
■ 공격 실습
- 메인페이지 우측 상단에 있는 검색창에 "<img src='a' onerror=alert('TEST')>" 구문 삽입

■ 보호 방법
- 해당 구문이 서버로 전송되지 않으므로, 시큐어 코딩으로 대응 가능
SQL Injection
- 먼저 AWSGoat에 회원가입을 수행


- User 게시판에 들어가면 7개의 User 정보가 출력된다
* 이거 자체도 문제긴하다

- 검색창에 SQL Injection 공격 구문을 삽입하면 숨겨졌던 admin 계정이 출력된다
* 프록시 툴을 사용하면 이메일 정보도 확인 가능

■ 보호 방법
- AWS WAF를 통해 SQL Injection 공격 차단
1) AWS WAF 활성화 및 보호팩 생성
* 서비스에 대한 구독이 필요하다는 에러는 무시했다
* SQL injection 공격에 영향이 있는 경로는 blog-application-api에 포함되어 있으나 모든 리소스를 보호 리소스로 선택했다
* 보호 기능은 SQL 인젝션을 막으려는 것이니 '필수 규칙'으로 선택했다



2) 로깅 설정
- AWS WAF는 기본적으로 로그 저장이 안돼서 설정을 해줘야한다
- 보호 팩 - 생성한 보호 팩 선택 - 로깅

- 활성화 - 로깅 대상 - Amazon CloudWatch Logs - '새로 생성' -> 생성한 로그 그룹 명 입력 -> 저장
* 로그 그룹을 새로 생성할 때는 이름이 'aws-waf-logs-' 로 시작해야 한다


- 공격 테스트를 수행하면 CloudWatch에서 로그 확인 가능
- CloudWatch - 로그 - Log Management - 로그 스트림 - 생성된 로그 스트림 선택 - action이 BLOCK인 로그 조회
- 설명: Body에서 특정 데이터 매치(matchedData)에 의해 SQL Injection 탐지 및 차단

- WAF에서 차단되어 공격 구문을 넣어도 이전처럼 admin 계정 노출되지 않음

'AWS > AWSGOAT' 카테고리의 다른 글
| [AWSGoat] 설치 (1) | 2026.01.05 |
|---|