sPaiZ-Nuke.net - это официальный сайт движка,
сделанного на основе PHP-Nuke. Отличия его заключаются в том, что sPaiZ-Nuke (далее просто
SN) немного урезан в коде, но как показала практика не менее дыряв. Основой для взлома была дыры найденная группой
RusH в PHP-Nuke version <= 7.0 FINAL. Представляет она из себя
SQL-инъекцию. Она заключается в следующем: уязвимость находится в модуле Survey и удаленный атакующий может внедрить произвольный sql-код используя отсутствие фильтрации переменной pollID. Данная уязвимость может быть использована для получения хешей паролей пользователей портала:

www.victim.com/php-nuke/modules.php? name=Surveys&pollID=a'[sql_code_here]

По хорошему стечению обстоятельств выяснилось, что и SN подвержен этой уязвимости 😉 Далее есть два пути: внедрить свой SQL-код или воспользоваться приватным сплоитом (r57nuke-survey.pl).
Для получения MD5 хеш админа нужно было узнать его имя. Явным образом оно не присутствовало в новостях на сайте, но его можно узнать несколькими способами:

1) Первым делом я нашел асю админа на сайте и просто постучавшись к нему с помощью Социальной Инженерии, быстро узнал под каким он ником зареген (его имя оказалось
Sensey).

2) Самый верный и быстрый способ, как потом оказалось, имя админа можно узнать из названий рисунков, например:

<img src="themes/viper/images/authors/ Leonboy.gif" border="0" title="Leonboy" align="right"
height="19">

Т.е. делаем поиск в исходнике главной страницы по слову
"images/authors/".

3) Как правило это юзер у которого больше всего постов на сайте. Данная статистика общедоступна.

4) Большинство админов первым делом регистрируются под ником admin.

Теперь, зная имя админа, я без проблем узнал его хеш. Далее для
попадания в админку у меня опять было два пути:

1) Набрутить пароль который находился в этом хеше.

2) Подставить хеш в куку. Это способ наиболее быстрый, т.к. требует только знаний как
модифицировать куку и формат в котором хранится в них хеш. Например, почти все известный на сегодня движки хранят хеш в куке: phpBB, PHP-Nuke, Invision Power Board (в ранних версиях, в куке хранился пароль в открытом виде) и т.д. Не исключение оказался и наш SN.

Сначала я выбрал первый способ в надежде на пароль от дурака, но после 10 минут брута в
MD5Inside я понял, что лучше выбрать способ с кукой. Для определения формата в котором хранятся данные в куке мне потребовалось скачать с сайта производителя последнюю версию SN 1.3 и установить на localhost. Далее я залогинился под админом в IE (строение и способ изменения кук в IE на тот момент я знал больше, чем в Опере) и открыл
IECookiesView. Открыв куку я увидел, что переменная Key у куки называется admin, а Value (где и должен был находиться хеш) имеет значение:

YWRtaW46NjM2MGYzOTNlMzYwMmIzZmU5MGM4OTZhNGNhY2ZiMDk=

Данное значение не совсем походило на хеш =), но знак "=" на конце подсказал мне, что это какой-то текст закодированный в base64 (как потом выяснилось, после изучения исходника auth.php, это оказался base64) и после довольно простой программки в PHP:

<?php
echo base64_decode("YWRtaW46NjM2MGYzOTNlMzYwMmIzZmU5MGM4OTZhNGNhY2ZiMDk=");
?>

оказало, что это действительно base64 и в переменно Value харнится:

admin:6360f393e3602b3fe90c896a4cacfb09 // Т.е. имя_админа:md5_хеш

Теперь нам предстояло получить с сайта жертвы любую куку и изменить ее на:

Key=admin
Value=логин_и_пароль_в_md5_зашифрованный_в_base64

Первым делом я зашифровал с помощью base64_encode() логин и пароль админа и полез на сайт с целью получить куку. Но тут меня ждал очередной облом, т.к. все опросы (работаю на основе запоминания IP на 15 мин.) и т.п. не создают куков. Пришлось опять стучаться к автору движка и применять Социальную
инженерию. После недолгого разговора выяснилось, что куки создаются только для админа и обычный посетитель сайта их не может получить.

На этом этапе я немного встал в тупик: куку с сайта жертвы я получить не мог, отредактировать переменную "Web site" в куках от IE я не могу, а изучать способ хранения кук в других браузерах у меня не было желания в тот момент =).

Через некоторое время мой друг (NivaX) напомнил мне, что в AccessDiver
есть прекрасная возможность работать с 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_radmintopic=1&chng_radminsurvey=1
&chng_radmindownload=1&chng_radminsuper=1 &chng_pwd=web-hack.ru&
chng_pwd2=web-hack.ru& adm_aid=Sensey&op=UpdateAuthor

В переменных chng_aid и adm_aid хранилось имя админа, а в chng_pwd и chng_pwd2 новый пароль. Обратите внимание, что нету формы для запроса старого пароля, если бы такая имелась, то моя попытка сменить пароль провалилась
бы (интересен тот факт, что после общения с разработчиком после взлома он таки согласился
создать форму для ввода старого пароля). Формат куки передаваемой в AccessDiver был:

admin=YWRtaW46ODMxOTZhZWI2NjI5ZTMy NmI1YjZmNGFhN2M5MTJkYTk=

После этих манипуляций я легко залогинился под своим новым паролем и запостил в новостях красивую новость с заголовком "Hacked by
Terabyte".

Хочу заметить, что никаких деструктивных операций я не производил, а взлом был сделан лишь из тех соображений, чтобы
указать автору на уязвимость, а не из-за
вражды, ненависти и т.п. Еще хочу заметить, что взлом не удался бы (не смог бы получить хеш) если на хостинге
стоял бы не MySQL версии 4.

Статья предоставлена http://www.web-hack.ru.

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии