При проведении пентестов очень часто приходится иметь дело с такими известными CMS как Joomla, WordPress и Drupal. Эта тройка составляет значительную часть от общего количества используемых в сети систем управления контентом с открытым исходным кодом. Серьезные уязвимости, как правило, присутствуют только в древних версиях, поэтому на первый план выходят самостоятельно установленные плагины, безопасность которых может быть намного более далекой от идеала, чем в ядре системы.
Инструмент CMS Explorer служит для определения плагинов в перечисленных выше CMS. Он представляет собой небольшой perl-скрипт с набором списков плагинов для каждой из CMS. Наборы легко обновляются, указав ключ -update. Утилита также сканирует используемые темы оформления, но обычно это не несет никакой пользы. Чтобы отключить сканирование тем, в исходном коде нужно вручную указать значение соответствующего элемента массива ($OPTIONS{‘checkthemes’} = 0;), так как автор не предусмотрел такой опции при запуске.
Отличительной особенностью скрипта является автоматический поиск на предмет уязвимостей по базе данных OSVDB для найденных плагинов. Однако для использования поиска необходимо иметь ключ к API сервиса. Впрочем, получить его может любой желающий, пройдя регистрацию. К сожалению, присутствует одно ограничение – сервис позволяет сделать только 100 запросов в день. Получив ключ, нужно создать в папке с CMS Explorer файл osvdb.key и внести значение.
Пример работы скрипта:
cms-explorer.pl -url http://localhost/wp/2.9/ -osvdb -explore -type WordPress ******************************************************* Beginning run against http://localhost/wp/2.9/... Testing plugins... Plugin Installed: wp-content/plugins/hello.php Plugin Installed: wp-content/plugins/akismet/ ******************************************************* Running explorer... Looking for plugin/module files... ******************************************************* Requesting files... ******************************************************* Summary: Plugin Installed: wp-content/plugins/hello.php URL http://localhost/wp/2.9rc1/wp-content/plugins/he llo.php SVN http://svn.wp-plugins.org/wp-content/plugins/hel lo.phptrunk/ http://osvdb.org/22654 WordPress wp-content/plugins/hello.php Direct Re quest Path Disclosure http://osvdb.org/62684 WordPress wp-content/plugins/hello.php add_actio n() Function Path Disclosure Plugin Installed: wp-content/plugins/akismet/ URL http://localhost/wp/2.9rc1/wp-content/plugins/ak ismet/ SVN http://svn.wp-plugins.org/wp-content/plugins/aki smet/trunk/ http://osvdb.org/37290 Akismet for WordPress akismet.php Unspecified Is sue http://osvdb.org/62683 WordPress wp-content/plugins/akismet/akismet.php add_action() Function Path Disclosure
Как можно заметить, сначала проводится перебор всех плагинов из списка, и только потом проверяется, можно ли получить листинг файлов из директории wp-content/plugins/. Почему действия производятся именно в таком порядке, а не в обратном, мне непонятно, но надеюсь к следующей версии код будет улучшен.
Leave a Reply