[입력 값 검증]
- 악의적인 입력 값 검증 후 차단
- SQL 인젝션은 특수한 문자나 패션 사용하기 때문에 해당 문자나 패턴을 감지 후 차단
- Sanitizing 같이 서버에서 악의적인 문자열만 필터링 한 후 처리
[사전에 컴파일 된 쿼리 사용]
- Prepared Statrment와 같은 사전에 컴파일 된 쿼리 사용
- 컴파일 된 쿼리는 입력 값에 의해 변경 되지 않아 효과적
[시스템 하드링]
- DB를 최소 권한으로 운영하거나 입력 값의 유형을 지칭
[WAF]
- 웹 어플리케이션 방화벽
- 사전에 정의해 둔 룰셋에 따라 공격 차단
- SQL Injection은 어플리케이션 상에서 동작하기 때문에 WAF 차단 가능
- WAF 무력화시 공격에 노출되기 때문에 입력값을 필터링하는 등 추가적인 작업 필요
[실습]
- 해당 실습은 ModSecurity 사용

- SQL Injection 룰셋 설명
- SecRule : 사용자가 직접 정의한 방화벽 룰셋 의미
- ARGS : 패킷 대부분의 필드에서 검사
- 첫번쨰 "..." : 연산자라고 하며, 정규식을 사용하거나 특정 패턴 등록시 WAF에서 해당 정규식과 매칭되는 패킷을 찾아 룰셋에 매칭
- 두번쨰 "..."
- 연산자에서 지정된 패턴에 매칭된 패킷이 존재 시, 행해지는 동작
- Chain : 룰셋이 매칭될 경우, 다음 룰셋(하위)과 연동하여 매칭 진행
- msg : 조건 매칭 시 해당 패킷 로그에 기록을 같이하는 문자열

- ID : 임의의 문자
- PW : SQL Injection 공격인 'or'1'='1
- 로그인 차단 확인

- SQL Injection 공격 탐지되어, 로그인 시도 ID 및 PW 정보 확인
- 로그 내용

- 게시물 URL를 통한 자동화 SQL Injection 공격을 하기 위한 URL 수집
sqlmap --current-db -u "(복사한 URL)"

- WAF로 차단되어 DB 정보 유출 실패
'보안 > 보안 개념' 카테고리의 다른 글
| LFI와 RFI (0) | 2026.05.20 |
|---|---|
| XSS-WAF로 차단 (0) | 2026.05.20 |
| SQL Injection 개념 및 실습 (0) | 2026.05.19 |
| 웹 프록시 개념 및 실습 (0) | 2026.05.19 |
| 윈도우 권한 상승 케이스 분석 실습(Fodhelper UAC Bypass) (0) | 2026.05.19 |