Баги популярного форума 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 – это дефолтные настройки интерпретатора, но умников в инете хватает