|
Terabyte Опубликовано: dl, 07.01.04 04:49 sPaiZ-Nuke.net - это официальный сайт движка сайтов, сделанного на основе PHP-Nuke. Отличия заключаются в том, что sPaiZ-Nuke (далее просто SN) намного урезан в коде, но, как показала практика, не менее дыряв. Основой для взлома была дыра, найденная группой RusH (http://rst.void.ru) в PHP-Nuke version <= 7.0 FINAL (http://rst.void.ru/texts/advisory16-ru.txt). Представляет она из себя SQL-инъекцию. Уязвимость находится в модуле Survey, и удаленный атакующий может внедрить произвольный sql-код, используя отсутствие фильтрации переменной pollID. Данная уязвимость может быть использована для получения хешей паролей пользователей портала: www.victim.com/php-nuke/modules.php?name=Surveys&pollID=a'[sql_code_here] По хорошему стечению обстоятельств выяснилось, что и SN подвержен этой уязвимости ;-) Далее есть два пути: внедрить свой SQL-код, или воспользоваться приватным сплоитом (r57nuke-survey.pl). Ни то, ни другое я вам дать не могу, по понятным причинам :-) Далее для получения MD5 хеш админа нужно было узнать его имя. Явным образом оно не присутствовало в новостях на сайте, но его можно узнать несколькими способами:
Теперь, зная имя админа, я без проблем узнал его хеш. Далее для попадения в админку у меня опять было два пути:
Сначала я выбрал первый способ в надежде на пароль от дурака, но после 10 минут брута в MD5Inside 1.0.1.0 (http://www.web-hack.ru/download/info.php?go=75) я понял, что лучше выбрать способ с кукой. Для определения формата, в котором хранятся данные в куке, мне потребовалось скачать с сайта производителя последнюю версию SN 1.3 и установить на localhost. Далее я залогинился под админом в IE (строение и способ изменения кук в IE на тот момент я знал больше, чем в Опере) и открыл IECookiesView 1.50 (http://www.web-hack.ru/download/info.php?go=78). Открыв куку, я увидел, что переменная Key у куки называется admin, а Value (где и должен был находиться хеш) имеет значение: YWRtaW46NjM2MGYzOTNlMzYwMmIzZmU5MGM4OTZhNGNhY2ZiMDk= Данное значение не совсем походило на хеш =), но знак "=" на конце подсказал мне что это какой-то текст, закодированный в base64 (как потом выяснилось после изучения исходника auth.php, это действительно оказался base64) и после довольно простой программки в PHP:
оказалось, что это действительно base64, и в переменной Value хранится:
Теперь нам предстояло получить с сайта жертвы любую куку и изменить ее на:
Первым делом я зашифровал с помощью base64_encode() логин и пароль админа и полез на сайт с целью получить куку. Но тут меня ждал очередной облом, т.к. все опросы (работающие на основе запоминания IP на 15 мин.) и т.п. не создают куков. Пришлось опять стучаться к автору движка и применять социальную инженерую. После недолгого разговора выяснилось, что куки создаются только для админа, и обычный посетитель сайта их не может получить. На этом этапе я немного встал в тупик: куку с сайта жертвы я получить не мог, отредактировать переменную "Web site" в куках от IE я не могу, а изучать способ хранения кук в других браузерах у меня не было желания в тот момент =) Через некоторое время мой друг (NivaX) напомнил мне что в AccessDiver (http://www.web-hack.ru/download/info.php?go=6) есть прекрасная возможность работать с HTTP на низком уровне, т.е. видеть все ответы сервера и передвать ему различные заросы (GET, POST и в т.ч. куки). Я включил режим Expert и прошел по вкладкам: Extras Tools\HTTP Debugger. Теперь мне предстояло сделать запрос к admin.php, который бы менял пароль. Страницей, на которой меняется пароль, оказалась admin.php?op=modifyadmin&chng_aid=[имя_админа] После изучения исходника html-страницы я сделал POST-запрос: chng_name=God&chng_aid=Sensey&chng_email=admin@lamer.gi&chng_admlanguage=&chng_radminarticle=1&
В переменных chng_aid и adm_aid хранилось имя админа, а в chng_pwd и chng_pwd2 новый пароль. Обратите внимание, что формы для запроса старого пароля отсутствует, иначе бы моя попытка сменить пароль провалилась (интересен тот факт, что после общения с разработчиком после взлома он таки согласился добавить форму для ввода старого пароля). Формат куки, передаваемой в AccessDiver был:
После этих манипуляций я легко залогинился под своим новым паролем и запостил в новостях красивую новость с заголовком "Hacked by Terabyte". Хочу заметить, что никаких деструктивных операций я не производил, взлом был сделан лишь из тех соображений, чтобы указать автору на уязвимость, а не из-за вражды, ненависти и т.п. Обсуждение данной статьи производится у меня на форуме. Еще хочу заметить, что взлом не удался бы (не смог бы получить хеш) если на хостинге стояла не MySQL версии 4.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|