[Dreamhack] XSS-1, XSS-2

hee·2025년 5월 19일

Web hacking

목록 보기
10/11

XSS1

문제에서 제시하는 페이지는 총 4가지 입니다.
1. / : 인덱스 페이지
2. /vuln : 이용자가 입력한 값 출력
3. /memo : 이용자에게 메모를 남길 수 있고, 출력도 가능합니다
4. /flag : 전달된 URL에 임의의 이용자가 접속하게 하여, 해당 이용자의 쿠기에는 FLAG가 존재함을 확인합니다.

취약점 분석
vuln, memo의 엔드포인트에는 이용자의 입력값을 받아 출력합니다.
memo는 render_template를 이용해 memo.html를 이용해 출력하는데 render_template함수는 전달된 템플릿 변수를 기록할 때 HTMl 코드로 변환하여 저장하기 때문에 XSS가 발생하지 않습니다. 하지만, vuln은 이용자가 입력한 값을 페이지에 그대로 노출시키기 때문에 XSS가 발생합니다.

익스플로잇
/vuln 엔드포인트에서 발생하는 XSS 취약점을 통해 임의 이용자 쿠키를 탈취해야합니다. 탈취한 쿠키를 전달받기 위해서는 외부에서 접근 가능한 웹서버 혹은 memo 엔드포인트를 사용할 수 있습니다.

location.href : 전체 url 반환 혹은 업데이트 가능
document.cookie : 해당 페이지에서 사용하는 쿠키를 읽고 씀

쿠키탈취
memo 페이지 사용
<script>location.href = "/memo?memo=" + document.cookie;</script>
웹 서버 사용
<script>location.href = "/memo?memo=" + document.cookie;</script>


파라미터로 쿠키탈취를 위한 코드를 작성하면, flag 값이 메모에 나온다.

XSS2
문제에서 제시하는 페이지는 동일하게 4가지입니다.
다만, 1번 문제와 다르게 vuln 페이지에서 param으로 전달받은 값을 html 코드로 변환하기 때문에, 1번 처럼 문제를 풀 수는 없습니다.

0개의 댓글