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를 기록하도록 만들면 메모 페이지에 쿠키가 찍힐것이다.
정답이란다.
ㅘ!
ReplyDelete