Ломаем форум за 5 минут

nikitozz

Хакер, номер #072, стр. 072-072-1

(nikitoz@real.xakep.ru)

Баги популярного форума PhpBB

Пожалуй, в половине приходящих ко мне писем содержится просьба помочь со взломом какого-то сайта. «Друг увел любимую девушку, – слезно пишет Петя из Томи. – Помоги отомстить негодяю! Он, правда, выше на 20 сантиметров и с 12 лет занимается культуризмом. В общем, я хочу сломать его сайт, там еще форум есть». Это хорошо, что есть. Сейчас сломаем!

Разумеется, дать универсальный алгоритм по взлому любого форума невозможно. Такую инструкцию можно выпустить размером в 50 томов, и все равно она не будет полной. Сегодня я не буду грузить тебя программистскими выкладками, я просто опишу несколько путей для взлома самого популярного web-форума PhpBB, который установлен на сотнях тысяч серверов в инете.

С чего начать?

Начать надо с элементарного – необходимо определить версию установленного форума. Проще всего это сделать, зайдя в конференцию и поглядев вниз страницы – там будет строка с копирайтами и номером версии, что-то вроде этого: «Powered by phpBB 2.0.8 © 2001-2003 phpBB Group». На момент написания статьи самой последней стабильной версией форума была 2.0.10: багов в ней еще официально найдено не было, хотя я ни секунды не сомневаюсь, что они есть. Впрочем, ситуацию исправляет море ошибок в 2.0.6 и 2.0.8 – эти версии, несмотря на прошедшее время, все еще очень часто встречаются в Сети, подтверждение чему – результаты поиска по ключевой фразе «powered by...» в Яндексе: мною лично было найдено 2 миллиона (!) страниц для 2.0.6.

После того как ты узнал номер версии форума, нужно понять, какой баг лучше использовать. Для нас наибольший интерес представляют две версии форума: 2.0.6 и 2.0.8. В каждой из них есть довольно серьезная уязвимость sql-injection, которая позволяет получить доступ к таблице с пользовательской информацией и извлечь оттуда хэш пароля любого пользователя форума.

Ковыряем 2.0.6

Что касается более старой версии форума, 2.0.6, то об этой уязвимости известно уже давно, но количество уязвимых ресурсов не спешит сокращаться. Под нашим прицелом находится скрипт search.php, осуществляющий поиск по конференциям. Если внимательно посмотреть на код этого сценария, можно заметить, что когда переменная $show_results не установлена в значение posts или topics, становится возможным поместить в $search_results ядовитую строку, которая изменит выполняемый sql-запрос.

Поскольку об этом баге известно уже давно, появился даже эксплоит, который самостоятельно реализует sql-injection: тебе нужно лишь указать URL форума, имя пользователя, пароль которого тебя интересует, и идентификатор валидного топика. Скачать сплоит, написанный на php, можно здесь: www.scan-associates.net/papers/gemuruh-v2.php.txt; для его нормальной работы нужна библиотека cURL.

Чтобы проверить какой-либо из серверов на уязвимость, этот сценарий нужно залить на сервер и выполнить примерно следующим образом:

Sploit.php http://forum.site.ru user 12

Где http://forum.site.ru – это адрес форума, user – ник пользователя, чей пароль интересен, а 12 – идентификатор топика, в обсуждении которого участвовал пациент. Если форум уязвим, в результате работы эксплойта на экране появится хэш пароля пользователя user и останется лишь расшифровать его. Если же появилась строка «Not vulnerable, register_globals=Off», это означает, что форум неуязвим из-за настроек PHP. Справедливости ради надо отметить, что register_globals=Off – это дефолтные настройки интерпретатора, но умников в инете хватает.

Содержание  Вперед на стр. 072-072-2
ttfb: 3.169059753418 ms