Приколы в HTML - чатах.

HTML - чаты в основном это сборище бездельников и людей которым не хватает общения в реальной жизни. Поэтому просиживать там ради простой болтовни неинтересно. Куда приятнее найти скрытые возможности чата и использовать их для всяческих приколов над самыми глупыми и некультурными завсегдатаями. Если рассмотреть каждый из популярных чатов, можно сделать вывод - схема работы у всех одинаковая, однако их различие в некоторых деталях не позволяют изобрести универсальное средство для приколов. Необходимо рассматривать каждый чат в отдельности. И все же, стоит проверить чат на следующие скрытые приколы:
1. Клон ников - самый ЛамЕрский прикол.
Самое простое что можно сделать чтобы весело провести пару часов или выудить необходимую информацию у собеседников - клонирование ников. Есть следующие способы:
1) Если чат позволяет регистрацию кириллических и латинских ников, для клонирования чьего либо ника достаточно заменить один или несколько символов на его аналог. Т.е. допустим регистрируем ник Маша, подставив вместо русской буквы А латинскую. Теперь можно зайти в чат этим новым ником и от имени Маши требовать большой и чистой любви, а потом подождать появления настоящей Маши и приколоться с ее взаимного непонимания с остальными. Для того чтобы выявить клона, необходимо скопировать ник в MS-Word и присвоить ему шрифт который не поддерживает кириллицу - все станет на свои места, русские буквы станут квадратами, и если ник состоит из смеси квадратов и латиницы - это клон.
2) Во всех чатах "на ура" проходит замена латинской L - маленькой на латинскую i - большую. Выявить такой клон можно скопировав ник в MS-Word, выделив его, и нажав Shift+F3. Все буквы поменяют регистр - и сразу станет видно где L, а где i.
3) Можно попробовать более сложную замену - браузеры позволяют кодировать любые символы в hex виде. Т.е. допустим если создать ник Se&#74- то в браузере он будет выглядеть Set (&#74 - код буквы t). Коды символов можно посмотреть в MS-Word (Вставка/Символы). Остается только убедиться что можно регистрировать символы &# в нике. Выявить такой клон можно посмотрев HTML - код страницы чата - там он будет "как есть" - Se&#74.
Клонирование ников - самый глупый прикол, который, однако позволяет добиться интересных результатов - выудить из админа нужную инфу, поссорить всех людей в чате и т.д.
2. Разбор HTML-форм.
Обычно входная форма представляет собой несколько полей для ника, пароля, цвета и кнопки входа. Сохраните ее на диске с расширением html. Первое что надо сделать чтобы она работала - дополнить ACTION пути. Откройте сохраненный файл блокнотом и найдите тег FORM на этой странице и пропишите в action= полный путь к файлу (например
action=http://chat.lamo.ru/cgi-bin/login.cgi вместо action=/cgi-bin/login.cgi). Теперь можно входить в чат со своего диска не вызывая каждый раз входную страницу через WWW. Теперь надо посмотреть какие данные вы передаете серверу при входе, т.к. кроме открытых полей ника, цвета, пароля, там могут быть скрытые поля (type=hidden), тогда уберите эту запись - type=hidden, запустите свою форму и в новое поле (которое было скрытым) введите информацию отличную от начальной и попробуйте войти в чат. Но обычно на входной странице полей hidden или вовсе нет или замена инфы в них ни дает результата, тогда надо обратить внимание на поля ник и цвет. Если возможно регистрировать ник содержащий символы < > ; ' " # & ( ) это уязвимость которую можно использовать. Если позволено включать в ник < > - это возможность редактировать использования тегов или даже скриптов (о символах ; ' " # & () - потом ). Создав ник допустим -
<script>while(1) alert("Ну че, попали?");</script> и зайдя им в чат мы повесим броузеры у 95% юзеров зациклив их окно алертами. Однако тэг <script> фильтры вырезают в 1ю очередь. Тогда можно попробовать тег <iframe>, <src> и т.д. Также неплохо сработает тег комментария <!--. К сожалению, наверно у вас не получится вставить что-нибудь подобное в ник, поэтому рассмотрите поле цвета - обычно выбор цвета происходит с помощью тега <select>. Если цвета передаются серверу в обычном виде (например #00FF00 или green и т.д.) тогда попробуйте сделать следующее. Удалите все начиная с <select ….> и заканчивая </select> включительно, запомнив имя переменной цвета. Вместо удаленного кода вставьте <input name=color> (или другое имя переменной если оно было отлично от color) теперь сохранив и запустив свой HTML-файл вы можете попробовать ввести любой тег вместо цвета, например
"><script>while(1) alert("Ну че, попали?");</script><". Почти тоже самое что вставить этот скрипт в ник, за исключением необходимости закрытия "> и открытия <" тэгов. Все это будет работать если цвет передается в открытом виде, а CGI чата не фильтрует его. Если цвет передается в CGI в виде переменной (например color=a , color=b и т.д.) тогда можно попробовать найти недостающие переменные. Допустим, просмотрев весь список переменных, вы не обнаружили там переменную T. Замените тогда любую другую переменную, например A на T, и попробуйте войти выбрав тот цвет которому теперь соответствует T. Наверняка у Вас будет какой-нибудь резкий кислотный цвет, спрятанный вебмастером. Вот наверно и все про разбор формы, таким же образом можно разобрать форму отправки сообщений в самом чате, открыв поля hidden и т.д.

Однако некоторые чаты защищаются от возможности использования форм сохраненных на диске пользователя. Обычно для проверки подлинности формы CGI ищет запись внутри присылаемых пакетов типа Referer=http://chat.lamo.ru . Самый простой способ заставить вставить эту запись собственный браузер - редактировать HTML форму непосредственно в кеше, а не сохраняя копию на диске. Например, - заходим на входную страницу чата, после того как она полностью загрузилась в окне браузера, переключаем его в автономный режим. Находим соответствующую этой странице в журнал/сегодня запись. Проверяем, можно ли ее вызывать в автономном режиме, если да, то все должно получится. Ищем поиском соответствующий данной HTML-странице файл в папке
windows/temporary internet files. Грузим его в блокнот, редактируем его по своему усмотрению (обратите внимание - путь прописанный в action дополнять необязательно) и сохраняем там же, с тем же именем. Теперь открываем страницу заново в браузере через журнал. Все! Осталось выйти из автономного режима и использовать загруженную измененную страницу.
3. Еще один метод вставки скриптов
Если фильтр чата безжалостно вырезает символы < > отовсюду или осуществляет их замену на &lt и &gt, можно попробовать следующее. Посмотрите реализована ли в чате возможность автоматического копирования ника из окна листинга в окно отправки сообщений (т.е. вы кликаете на чей-нибудь ник, а он появляется у вас в окне отправки сообщения). Если такая возможность присутствует - это возможность вставить скрипт который будет запущен у тех, кто кникнет на Ваш ник. Обычно в чате автоматическое копирование реализуется с помощью набора тегов <a href…> и выглядит примерно так -
<A href="javascript:parent.msg.paste('Sеstra');"> - т.е. любой ник прописывается как есть прямо в скрипт. Создаем следующий ник -
');while(1) alert('Ну че, попали? Заходим в чат и начинаем всех дергать - стоит кому-то попытаться ответить - и он действительно попал. При клике на вашем нике у жертва вызовет исполнение тега <a href … с вшитым скриптом. Все будет выглядеть так
<A href="javascript:parent.msg.paste('');while(1) alert('Ну че, попали?');">
Я неплохо поприкалывался с такими никами на chat.fomenko.ru (старый HTML чат, а не java-чат). Однако там есть ограниечения, ник не должен быть более 20 символов, было запрещено регистрировать в нике символ ;
что немного осложнило задачу, но ненадолго. Дело в том, что java-script встроенный в Internet Explorer также хорошо обрабатывает hex кодировки символов как и сами символы. Т.е. я заменил в нике недостающие ; на %3b - получилось
')%3bwhile(1) alert(' - данный ник также отлично работал, пока разозлившийся вебмастер не запретил регистрацию остальных важных символов - ( ) однако их тоже можно заменить кодом "%код символа" проблемма в том, что в ник с ограничением в 20 символов после такой замены врядле что вставишь. У меня и по сей день есть скрипт-ник, однако он ничего злого не делает.

И все же, проверьте его в работе Nick= %27%29%3balert%28%27 Pass= 12925. Зайдите в старый!!! HTML-чате chat.fomenko.ru этим ником, кликните сами на него чтобы понять как он работает (кроме пользователей Netscape)

4. Использование системы фильтрации <> или переполнение буфера.
Оказывается из фильтра тоже можно выжать выгоду! О чем вы можете убедиться на старом HTML-чате chat.fomenko.ru (там их два). Если фильтр не вырезает символы <> а заменяет их на &lt и &gt (на экране браузера такая замена не заметна, разница в том, что тэги вставленные между &lt и &gt не работают, в отличие, от вставленных между <>) это может стать уязвимостью. Скорее всего, вся система фильтрации работает следующим образом:
1) Проверка отправленного сообщения на длину. Фильтр урезает слишком длинные сообщения, чтобы избежать переполнения буфера.
2) Замена всех < > на &lt и &gt соответственно.
3) Отправка сообщения в буфер
Явно видна уязвимость такой схемы. Допустим, буфер для сообщений не должен превышать 255 байт. Отправляем сообщение из 255 символов <. Оно успешно проходит первый фильтр (т.к. длина не более 255). Второй фильтр меняет все < > на &lt и &gt соответственно. В результате каждый символ заменяется 3 ! В буфер отправляется сообщение из 765 символов!
Попробуйте на вышеуказанном чате послать сами себе приватное сообщение ( для теста, любого содержания), а потом в общее окно послать мессагу из 216 символов < (для каждого ника надо подбирать свою величину - 216 может не сработать). Вы увидите что ваше приватное сообщение повторилось, если приватных сообщений за сеанс было несколько - на экран вылетят все ). Повторите мессагу из < раз 10 , и вы увидите, что приваты повторяются у всех (у каждого свои), люди будут нервничать и ругаться - т.к. некоторые просто станут тонуть от собственных приватов.
5. Поиск заменяемых переменных
Как-то раз я наблюдал как админ чата выгоняет баламута из чата. Но CGI чата дала небольшой сбой и вместо привычного:
"Вася с позором удален из чата" на экран выскочило -
"#nick# с позором удален из чата". Что это за задпись такая -"#nick#"? Я отправил сообщение включив туда эту последовательность. Когда мое сообщение появилось в окне чата оно выглядело так -
phantom4=> phantom4, вместо phantom4=> #nick#. Т.е. была найдена первая переменная которую CGI заменяла на ник отправителя. Я сразу решил это использовать, и зарегистрировать ник содержащий эту переменную. Т.к. при регистрации символ # вырезается, я заменил его hex эквивалентом получилось-
Я - %23nick%23 - осел. Теперь если, например, Vasia отправлял мне сообщение "Привет" на экран вылазило:
Vasia: Я - Vasia - осел =>Привет. Также я нашел еще переменные : #color# #id# #time#. Все это не представляло интереса пока я не обнаружил переменную #ip#. Любой кто отправлял эту комбинацию в чат демонстрировал свой IP. Как заставить пользователей отправлять ее? Вставить #ip# в свой ник и начать со всеми ругаться. Урра! Теперь вычислить IP собеседника для меня проще сделать чем для админа! Сделав ник %23ip%23 я залетел в чат с ругательствами и угрозами. Самые отмороженные очкарики моментально отреагировали, и через секунду у меня имелся обширный список IP ответивших на мои угрозы. Удивительно было признать, после продолжительного сбора IP собеседников, что многие популярные "девушки" чата - вовсе не девушки. А самые злостные матершиники и пошляки - всеми любимые спокойные люди. Ник %23ip%23 до сих пор работает на вышеуказанном чате, правда 70% людей уставших от моего терроризма не кликают на него или вставляют пробел внутрь. Но все-таки, проверьте его Nick = %23ip%23 Password=11870.