Dreamhack.io xss-1

문제는 다음과 같다.

 


그리고 다음과 같은 구조로 되어 있는데,

xss를 누르면

다음과 같이 alert가 뜬다.


memo 에는 인자값으로 넣은 내용이 기록되는 페이지가 있고,


flag를 누르면 뭔가를 제출 할 수 있도록 되어 있다. 코드를 읽어보자.


취약점이 발생 할 부분은 저기 있는

driver.get(f'http://127.0.0.1:8000/xss?xss={urllib.parse.quote(url)}')

이다.

직접적으로 selenium webdriver가 요청을 보내는 url을 조작 할 수 있다.

그런데 우리가 조작 할 수 있는 부분에 js코드를 넣을 수 있으니 다시 말하자면 다음과 같이 정리 할 수 있다.


'원하는 js코드를 실행 시킬 수 있다'


read_url 함수 부분이 실행되는 부분을 보면, 쿠키값을 인자로 받고 이를 driver.add_cookie에서 넣는다.


즉, 서버사이드로 실행되는 웹 드라이버의 쿠키에 플래그가 들어있다는것이고,

우리는 xss를 이용해서 서버사이드 웹 드라이버의 쿠키정보를 빼내 올 수 있다면 True를 반환하고, 결국 플래그가 메모에 찍힐거라는것이다.


쿠키 정보는 보통 document.cookie에 있으니 해당 내용에 접근을 하면 되겠다.


<script> location.href="/memo?memo="+document.cookie; </script>

location.href는 현재 주소인데, 현재 주소를 메모 페이지로 옮기고, 그곳에 cookie를 기록하도록 만들면 메모 페이지에 쿠키가 찍힐것이다.



정답이란다.

Comments

Post a Comment

Popular Posts