Hacking/Web.

Bypassing with special chars in XSS exploit

2019. 4. 19. 23:27

영화 "불량소녀 너를 응원해" 中

Bypassing with specialchars in XSS Exploit

 가끔 XSS 공격을 하다보면 다양한 WAF, 혹은 어플리케이션 자체의 필터링에 걸리는 경우가 발생한다. 이 경우엔 Javascript의 자유도(?) 덕분에 쉽게 우회할 수 있는 여지가 있다. 이러한 Javascript의 자유도는 서로 다른 객체 타입끼리의 연산을 수행하는 과정에서 발생하게 된다. 다음과 같은 예시 상황을 보자. 

[1,2,3,4]+"hello world"
// "1,2,3,4hello world"

 위의 경우엔 number로 이루어진 배열(Object)과 문자열간의 concat 연산을 하는 경우이다. 보다시피 object가 string으로 변환되어 있는 결과를 얻을 수 있다. 이러한 관점으로 조금 더 다채로운 객체와의 연산을 시도해볼 수 있다. 

![]
// false
![]+""
// "false"
alert+[]
// "function alert() { [native code] }"
alert+""
// "function alert() { [native code] }"

 이런 식으로 WAF, 혹은 어플리케이션 자체 필터링을 피할 수 있는 것이다. 이러한 원리를 사용한 문제 중에 흥미로웠던 문제가 바로 2017 Christmas CTF pictube 문제이다. 대회가 끝나고 블로그에 해당 문제의 write up을 올려두었으니 참고하면 좋을 것 같다.

 

 (여담이지만 이 문제 이후로 많은 XSS trick 문제들이 나왔고, 나도 이 문제 이후 javascript를 보는 관점을 달리할 수 있었다. panghodari 로 열일하고 있는 광호형이 만든 문제이다.)

 

2017/12/27 - [wri te-ups/CTF] - christmas CTF PICTUBE Write up

 

 pictube 문제를 풀 당시만 해도 노가다로 일일이 가젯을 찾았는데 이것을 자동화해주는 툴을 발견하여 블로그에 공유해보려 한다. 

 

http://www.jsfuck.com/

불러오는 중입니다...

해당 코드가 어떻게 돌아가는지 알고 싶으면 원평이형이 쓴 코드를 참고하도록 하자. (https://github.com/safflower/javascript-obfuscator