CMS Explorer

При проведении пентестов очень часто приходится иметь дело с такими известными 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/. Почему действия производятся именно в таком порядке, а не в обратном, мне непонятно, но надеюсь к следующей версии код будет улучшен.


7 комментариев

  1. Nosaer, 3. апреля 2010, 0:58

    Ну 100 запросов не так уж и мало)

     
  2. halkfild, 3. апреля 2010, 17:28

    Полезный инструмент. Опробуем 🙂

     
  3. iv, 5. апреля 2010, 11:02

    Задумывался кстати о подобной тулзе, а вот — она и есть 🙂 спасибо.

    > Отличительной особенностью скрипта
    Отличительной от кого? Какие есть аналоги?

     
  4. Raz0r, 5. апреля 2010, 16:56

    Отличительной самой по себе 🙂 Из аналогов могу привести OWASP Joomla Vulnerability Scanner и Drupal Vulnerability Scanner.

     
  5. iv, 16. апреля 2010, 15:51

    Данный инструмент насколько я понял не работает с джумлой 1.0.* 🙁

     
  6. itdef, 15. июля 2010, 12:56

    На сколько я понимаю данный инструмент работает только с joomla! 1.5
    А жаль…

     
  7. Sergey, 12. апреля 2013, 14:34

    Он не видит плагины которые размещены 1 файлом (без каталога), например, wp-content/plugins/rus-to-lat.php

    Raz0r, Что то мне не шлют пароль с OSVDB. Я правильно сделал указав им в письме, что мне нужен API для этого скрипта?

     

Write a comment: