Bypassing with special chars in XSS exploit
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 문제를 풀 당시만 해도 노가다로 일일이 가젯을 찾았는데 이것을 자동화해주는 툴을 발견하여 블로그에 공유해보려 한다.
해당 코드가 어떻게 돌아가는지 알고 싶으면 원평이형이 쓴 코드를 참고하도록 하자. (https://github.com/safflower/javascript-obfuscator)
'Hacking > Web.' 카테고리의 다른 글
ch4n3-world의 중복 인증 이슈에 관하여 (0) | 2020.02.28 |
---|---|
CTF 웹해킹 문제 풀 때 루틴 (0) | 2019.11.16 |
XSS awesome confirm variants (0) | 2019.04.17 |
Airbnb – When Bypassing JSON Encoding, XSS Filter, WAF, CSP, and Auditor turns into Eight Vulnerabilities (0) | 2019.03.28 |
python django ssti cheat sheet (0) | 2018.08.15 |