Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #92, АВГУСТ 2006 г.

SS возвращается

Zadoxlik (antichat.ru)

Хакер, номер #092, стр. 092-062-3


Пассивные

Пассивные XSS - это уязвимости в динамической части сайта. Это уже проще матрицы и ненадежнее. Не надо быть избранным, чтобы повестись на нее. XSS получается только при данном конкретном запросе к скрипту. Единственное — необходимо, чтобы скрипт выводил тебе что-то, что ты задаешь в своем запросе. Пожалуй, это самые неудобные уязвимости для осуществления атаки. Пассивные XSS делятся на уязвимости в скриптах, параметры к которым передаются через GET и через POST. Через POST - это вообще самое большое извращение, которое только можно представить. Для того чтобы пользователь попался в ловушку с GET-пассивной XSS, ему достаточно дать ссылку на страницу, которая сгенерирует JS-код. А вот для того, чтобы пользователь попался на POST-пассивную XSS, мы должны будем создать отдельный сайт, на котором поместим форму динамической отправки с необходимыми нам полями. Что за страшные слова я говорю? Давай разберем пример. Вот пример GET-пассивной XSS можно встретить на http://soft.mail.ru/.

Вводим в поиск «aaaa», жмем Enter. Смотрим. На странице образовалось несколько тэгов <input>, в которые вошел наш запрос, подставленный в параметр value этого тэга и взятый в двойные кавычки. Попробуем выйти. Для этого введем в поиск вот такой запрос: " style=background:url(javascript:alert(document.cookie)) "

Если ты решил проделывать опыты через осла, то выскочит куча абракадабры. Довести эту уязвимость до мультибраузерности и сделать отправку кук на снифер - дело техники, причем здесь сложностей не возникнет, поскольку фильтров вообще не наблюдается. Итак, чтобы пользователь попал на уязвимую страницу, нам просто надо сунуть ему вот такую ссылку:

http://soft.mail.ru/search_result_header.php?qs=1&words=%22+style%3Dbackground%3Aurl%28javascript%3Aalert%28document.cookie%29%29+%22

А теперь представь, что бы было, если б параметр «words» передавался скрипту через POST? Чтобы сформировать POST-запрос, надо сделать страницу с формой, в поля которой будет занесен необходимый нам запрос, а затем сделать JavaScript'ом автоотправку формы. И уже на эту страницу давать ссылку своей жертве. Вот простой пример (если бы в данном случае параметр принимался бы через POST):

КОД

<html>

<body onload="s.submit();">

<form name=s action=http://soft.mail.ru method=POST>

<input type=hidden name=words value='" style=background:url(javascript:alert(document.cookie)) "'>

</form>

</body>

</html>

Чтобы пользователь ничего не заподозрил, мы можем делать подобный редирект и с GET-пассивными уязвимостями. Более того! Можно делать это на уровне HTTP, например, с помощью такого PHP-скрита:

Назад на стр. 092-062-2  Содержание  Вперед на стр. 092-062-4