[DreamHack]-WHA ExploitTech: Bypass WAF
Web Application Firewall (WAF): 웹 애플리케이션에 특화된 방화벽
악성 트래픽을 유발하는 디도스와 데이터베이스와 관련된 SQLI, 최근에는 자바 로깅 라이브러리에서 발생한 log4j 등의 공격을 탐지하고 접속을 차단함
공격에 사용되었던 코드 즉, 주요 키워드를 기반으로 탐지
탐지 우회
대소문자 검사 미흡
SQL은 데이터베이스와 컬럼명을 포함해 질의문의 대소문자를 구분하지 않고 실행
탐지 과정 미흡
방화벽에서 악성 키워드를 탐지했을 때 다양하게 요청을 처리할 수 있음
-> 악성 키워드가 포함된 요청을 거부하거나 내부에서 치환 과정을 거친 후에 요청을 처리할 수도 있음
문자열 검사 미흡
ex) 방화벽에서 “admin” 키워드의 포함 여부를 검사하는 경우 - reverse와 concat 함수를 이용해 문자열을 뒤집고, 이어붙이며, 16 진수를 사용해 임의의 문자열을 완성
연산자 검사 미흡
일반 이용자의 입력값에는 연산자가 필요하지 않으므로 방화벽에서 “and”, “or”과 같은 연산자 키워드의 포함 여부를 검사함
^, =, !=, %, /, *, &, &&, |, ||, >, <, XOR, DIV, LIKE, RLIKE, REGEXP, IS, IN, NOT, MATCH, AND, OR, BETWEEN, ISNULL 등의 연산자를 사용할 수 있음
공백 탐지
공백을 허용하는 경우 공격자가 SQL Injection을 통해 다양한 함수와 또 다른 쿼리를 삽입해 의도하지 않은 결과가 나타날 수 있음
SELECT 구문과 문자열 사이에 주석을 나타내는 “/**/” 문자열을 삽입해 공백을 대신할 수 있음
Back Quote 문자를 사용해 공백 없이 쿼리를 실행할 수 있음