информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100Портрет посетителяСетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / библиотека / www
БИБЛИОТЕКА
вход в библиотеку
книги
безопасность
программирование
криптография
internals
www
телефония
underground
беллетристика
разное
обзор: избранное
конкурс
рейтинг статей
обсуждение




Подписка:
BuqTraq: Обзор
RSN
БСК
Закон есть закон




Как был взломан sPaiZ-Nuke.net
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 хеш админа нужно было узнать его имя. Явным образом оно не присутствовало в новостях на сайте, но его можно узнать несколькими способами:

  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 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:

<?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://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_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=YWRtaW46ODMxOTZhZWI2NjI5ZTMyNmI1YjZmNGFhN2M5MTJkYTk=

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

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

обсудить  |  все отзывы (0)

[26319; 32; 7.78]




Rambler's Top100
Рейтинг@Mail.ru





  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach