Why Always Me!

1. XSS / 공백 필터링 우회 본문

취약점 CASE/Web

1. XSS / 공백 필터링 우회

Racil U 2024. 2. 29. 14:37

간혹 진단을 하다 공백이 필터링되는 경우가 존재합니다.

공백 필터링 우회 시 사용할 수 있는 방법을 정리해 두려 합니다.

 

1. 단순 공백(space) 필터링

단순하게 공백만 필터링되는 경우, 다음과 같은 페이로드로 우회를 시도해 볼 수 있습니다.

 

1)  script 태그 사용

<script>alert(123)</script>

 

2)  슬래시(/) 사용

<img/src="x"onerror=alert(123)/>

 

2. 공백(space) 필터링 + 슬래시 필터링 + script 태그 필터링

공백과 슬래시가 필터링되는 경우 일반적인 방법으로 XSS를 발생시키긴 쉽지 않습니다.

이런 경우에는 공백을 대체할 수 있는 다른 방법을 찾아봐야 합니다.

1)  CLRF / Tab

CLRF는 Carriage Return,Line Feed의 줄임말로 개행문자를 뜻합니다. 각각 \r, \n으로 표현되는데, 16진수로는 0x0D, 0x0A로 표현합니다.

CLRF를 통해 공백을 대체할 수 있는데, 방법은 다음과 같습니다.

 

<img%0a%0dsrc='x'onerror=alert(123)>

 

CRLF 대신 Tab을 사용할 수도 있습니다.

<img%09src='x'onerror=alert(123)>

 

2)  Form Feed

보통 공백을 필터링할 때, CRLF와 Tab(horizontal tabulation)은 같이 필터링되는 경우가 많으므로, Form Feed를 이용하여 필터링을 우회할 수 있습니다. 16진수로 0x0C로 표현됩니다.

 

<img%0csrc='x'onerror=alert(123)>

 

2-1) PoC

Form Feed 사용하여 공백 대체

 

 

응답 값에 포함된 스크립트

 

img와 src가 붙어있는 것 같지만, 사이에 Form Feed(0x0C)가 적용되어 있습니다. 브라우저는 이를 공백으로 처리합니다.

 

XSS 성공~

'취약점 CASE > Web' 카테고리의 다른 글

5. XST (Cross Site Tracing)  (0) 2025.03.01
4. Padding Oracle Attack  (0) 2025.03.01
3. Zip Slip  (0) 2024.05.02
2. JWT None Algorithm Attack  (0) 2024.04.09
WEB/API  (0) 2024.02.28