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

+ Recent posts