Безопасность WordPress
Существует множество утилит для проверки безопасности системы управления контентом (CMS) WordPress. В остальной части поста я хочу поговорить об утилите WPScan, которая выполняет великолепную работу по сканированию установленной WordPress и её плагинов на уязвимости.
WPScan
WPScan представляет собой сканер безопасности WordPress, который может идентифицировать известные проблемы с безопасностью в WordPress CMS системах. WPScan написан на Ruby и требует несколько зависимостей, а именно typhoeus, xml-simple, mime-types, nokogiri и json. Для установки зависимостей нужно набрать следующее:
# gem install –user-install typhoeus
# gem install –user-install xml-simple # gem install –user-install mime-types # gem install –user-install nokogiri # gem install –user-install json |
Зависимости, обеспечивающие функциональность, описаны далее:
- typhoeus: позволяет запуск HTTP запросов параллельно, в то время как cleanly encapsulating handling logic.
- xml-simple: простой API для обработки XML.
- mime-types: allows identification of a file’s likely MIME content type based по расширению файла.
- nokogiri: парсер HTML, XML, SAX и Reader. Также обеспечивает поиск документов через Xpath или селекторы CSS3.
- json: provides JSON parsing logic.
Для установки WPScan нужно набрать следующее:
# tar xvzf wpscanteam-wpscan-39d8cdd.tar.gz
# cd wpscanteam-wpscan-39d8cdd |
Если использовать Backtrack 5, то WPScan уже установлен и находится в каталоге /pentest/web/wpscan/.
Страница помощи WPScan выдаёт нам следующую информацию:
# ruby wpscan.rb -h
WordPress Security Scanner by the WPScan Team Sponsored by the RandomStorm Open Source Initiative _____________________________________________________ Help : Some values are settable in conf/browser.conf.json : user-agent, proxy, threads, cache timeout and request timeout –update Update to the latest revision –url | -u <target url> The WordPress URL/domain to scan. –force | -f Forces WPScan to not check if the remote site is running WordPress. –enumerate | -e [option(s)] Enumeration. option : u usernames from id 1 to 10 u[10-20] usernames from id 10 to 20 (you must write [] chars) p plugins p! only vulnerable plugins t timthumbs Multiple values are allowed : ‘-e tp’ will enumerate timthumbs and plugins If no option is supplied, the default is ‘tup!’ –follow-redirection If the target url has a redirection, it will be followed without asking if you wanted to do so or not –wp-content-dir <wp content dir> WPScan try to find the content directory (ie wp-content) by scanning the index page, however you can specified it. Subdirectories are allowed –wp-plugins-dir <wp plugins dir> Same thing than –wp-content-dir but for the plugins directory. If not supplied, WPScan will use wp-content-dir/plugins. Subdirectories are allowed –proxy Supply a proxy in the format host:port (will override the one from conf/browser.conf.json) –wordlist | -w <wordlist> Supply a wordlist for the password bruter and do the brute. –threads | -t <number of threads> The number of threads to use when multi-threading requests. (will override the value from conf/browser.conf.json) –username | -U <username> Only brute force the supplied username. –help | -h This help screen. –verbose | -v Verbose output. |
Я бы рекомендовал для первого раза запустить с ключом –update , чтобы убедиться, что вы используете последнюю версию WPScan:
# ruby wpscan.rb –update
Особенности WPScan
В данном подразделе я опишу возможности WPScan и соответствующие команды, с какими нужно выполнять запуск для достижения заданной функциональности.
Подтверждение WordPress
Это обычная задача, выполняемая автоматически каждый раз как мы запускаем скрипт wpscan.rb. Если исследуемый веб-сайт не работает под управлением WordPress нет смысла запускать остальное множество тестов. Для форсирования проверки используйте опцию –force при запуске скрипта, например:
# ruby wpscan.rb –url resources.npo-echelon.com –force
Инвентаризация пользователей
Мы можем инвентаризировать пользователей, путем запуска следующей команды:
# ruby wpscan.rb –url resources.npo-echelon.com –enumerate u –threads 1
WordPress Security Scanner by the WPScan Team Sponsored by the RandomStorm Open Source Initiative _____________________________________________________ | URL: http://resources.npo-echelon.com | Started on Mon Aug 13 22:04:54 2012 [!] The WordPress theme in use is Boulevard_theme/boulevard v1.0.2 [!] The WordPress ‘http://resources.npo-echelon.com/readme.html’ file exists [!] Full Path Disclosure (FPD) in ‘http://resources.npo-echelon.com/wp-includes/rss-functions.php’ [!] WordPress version 3.4.1 identified from meta generator [+] Enumerating plugins from passive detection … 2 found : | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.npo-echelon.com/$wp-plugins$/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Name: syntaxhighlighter | Location: http://resources.npo-echelon.com/$wp-plugins$/syntaxhighlighter/ [+] Enumerating usernames … We found the following 10 username/s : root keatron jack ddalasta Nick Valenteen Dan Hestad Tim Farley kenneth dinesh-mistry Jeremy Martin [+] Finished at Mon Aug 13 22:05:13 2012 |
Программа WPScan обнаружила 10 имен пользователей, а именно: root, keatron, jack, ddalasta, Nick Valenteen, Dan Hestad, Tim Farley, kenneth, dinesh-mistry и Jeremy Martin.
Взлом слабых паролей
Команда для проверки списка пользователей в связке с набором паролей может выглядеть так:
# echo “admin” >> passwords.txt
# ruby wpscan.rb –url resources.npo-echelon.com –enumerate u –wordlist passwords.txt –threads 50
WordPress Security Scanner by the WPScan Team Sponsored by the RandomStorm Open Source Initiative _____________________________________________________ | URL: http://resources.npo-echelon.com | Started on Mon Aug 13 21:56:32 2012 [!] The WordPress theme in use is Boulevard_theme/boulevard v1.0.2 [!] The WordPress ‘http://resources.npo-echelon.com/readme.html’ file exists [!] Full Path Disclosure (FPD) in ‘http://resources.npo-echelon.com/wp-includes/rss-functions.php’ [!] WordPress version 3.4.1 identified from meta generator [+] Enumerating plugins from passive detection … 2 found : | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.npo-echelon.com/$wp-plugins$/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Name: syntaxhighlighter | Location: http://resources.npo-echelon.com/$wp-plugins$/syntaxhighlighter/ [+] Enumerating usernames … We found the following 10 username/s : root keatron jack ddalasta Nick Valenteen Dan Hestad Tim Farley kenneth dinesh-mistry Jeremy Martin [+] Starting the password brute forcer Brute forcing user ‘Jeremy Martin’ with 1 passwords… 100% complete.. [+] Finished at Mon Aug 13 21:57:01 2012 |
Мы видим, что WPScan нашел 10 пользователей: root, keatron, jack, ddalasta, Nick Valenteen, Dan Hestad, Tim Farley, kenneth, dinesh-mistry и Jeremy Martin, и пытался войти с паролем «admin», который мы ранее сохранили в файл passwords.txt. В этом файле вы можете задать множество паролей для проверки. Можно также заметить, что проверка завершилась до того, как слабый пароль был обнаружен, это значит, что данная установка WordPress запрещает простые пароли.
Инвентаризация версии
Следующая команда используется для определения номера версии инсталляции WordPress:
# ruby wpscan.rb –url resources.npo-echelon.com –enumerate v –threads 1
WordPress Security Scanner by the WPScan Team Sponsored by the RandomStorm Open Source Initiative _____________________________________________________ | URL: http://resources.npo-echelon.com | Started on Mon Aug 13 22:06:44 2012 [!] The WordPress theme in use is Boulevard_theme/boulevard v1.0.2 [!] The WordPress ‘http://resources.npo-echelon.com/readme.html’ file exists [!] Full Path Disclosure (FPD) in ‘http://resources.npo-echelon.com/wp-includes/rss-functions.php’ [!] WordPress version 3.4.1 identified from meta generator [+] Enumerating plugins from passive detection … 2 found : | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.npo-echelon.com/$wp-plugins$/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Name: syntaxhighlighter | Location: http://resources.npo-echelon.com/$wp-plugins$/syntaxhighlighter/ [+] Finished at Mon Aug 13 22:06:55 2012 |
Сканирование завершено и был обнаружен WordPress версии 3.4.1.
Инвентаризация плагинов
Следующая команда может идентифицировать наличие или отсутствие плагинов WordPress:
# ruby wpscan.rb –url resources.npo-echelon.com –enumerate p –threads 50
WordPress Security Scanner by the WPScan Team Sponsored by the RandomStorm Open Source Initiative _____________________________________________________ | URL: http://resources.npo-echelon.com | Started on Mon Aug 13 22:10:22 2012 [!] The WordPress theme in use is Boulevard_theme/boulevard v1.0.2 [!] The WordPress ‘http://resources.npo-echelon.com/readme.html’ file exists [!] Full Path Disclosure (FPD) in ‘http://resources.npo-echelon.com/wp-includes/rss-functions.php’ [!] WordPress version 3.4.1 identified from meta generator [+] Enumerating plugins from passive detection … 2 found : | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.npo-echelon.com/$wp-plugins$/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Name: syntaxhighlighter | Location: http://resources.npo-echelon.com/$wp-plugins$/syntaxhighlighter/ [+] Enumerating installed plugins … Checking for 2864 total plugins… 100% complete. [+] We found 7 plugins: | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.npo-echelon.com/$wp-plugins$/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Directory listing enabled? Yes. | Name: syntaxhighlighter | Location: http://resources.npo-echelon.com/$wp-plugins$/syntaxhighlighter/ | Directory listing enabled? Yes. | Name: searchterms-tagging-2 | Location: http://resources.npo-echelon.com/wp-content/plugins/searchterms-tagging-2/ | Directory listing enabled? Yes. | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.npo-echelon.com/wp-content/plugins/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Directory listing enabled? Yes. | Name: wp-super-cache | Location: http://resources.npo-echelon.com/wp-content/plugins/wp-super-cache/ | Directory listing enabled? Yes. | Name: syntaxhighlighter | Location: http://resources.npo-echelon.com/wp-content/plugins/syntaxhighlighter/ | Directory listing enabled? Yes. | Name: redirection | Location: http://resources.npo-echelon.com/wp-content/plugins/redirection/ | Directory listing enabled? Yes. [+] Finished at Mon Aug 13 22:22:55 2012 |
Мы можем наблюдать, что WPScan по факту нашел 5 различных плагинов, называемых upprev-nytimes-style-next-post-jquery-animated-fly-in-button, syntaxhighlighter, searchterms-tagging-2, wp-super-cache и redirection.
- Инвентаризация уязвимостей
- Инвентаризация уявимостей плагинов
2.2. Уязвимость Timthumb
WPScan также имеет возможность сканировать весь каталог wp-content для экземпляров любиых устаревших или небезопасных версий скрипта timthumb.php , который позволяет нам загружать изображения с определенного набора удаленных веб-узлов для масштабирования и других манипуляций. Он обеспечивает кэширующий механизм, так что WordPress не обязан постоянно масштабировать и хранить изображения. Каталог кэша доступен обычным пользователям из сети Интернет. Сам файл timthumb.php обычно получает запрашиваемый файл и помещает его в корневой каталог доступный по всемирной сети. Атакующий может убедить систему WordPress CMS загрузить PHP shell в корневой каталог и получить доступ к нему через браузер. Фактически это дает злоумышленнику web shell, который может быть использован для дальнейшего повреждения системы .
Для проверки будет ли timthumb.php в установке WordPress уязвимым нужно ввести следующую команду:
# ruby wpscan.rb –url resources.npo-echelon.com –enumerate t –threads 50
WordPress Security Scanner by the WPScan Team Sponsored by the RandomStorm Open Source Initiative _____________________________________________________ | URL: http://resources.infosecinstitute.com | Started on Mon Aug 13 22:32:07 2012 [!] The WordPress theme in use is Boulevard_theme/boulevard v1.0.2 [!] The WordPress ‘http://resources.infosecinstitute.com/readme.html’ file exists [!] Full Path Disclosure (FPD) in ‘http://resources.infosecinstitute.com/wp-includes/rss-functions.php’ [!] WordPress version 3.4.1 identified from meta generator [+] Enumerating plugins from passive detection … 2 found : | Name: upprev-nytimes-style-next-post-jquery-animated-fly-in-button | Location: http://resources.infosecinstitute.com/$wp-plugins$/upprev-nytimes-style-next-post-jquery-animated-fly-in-button/ | Name: syntaxhighlighter | Location: http://resources.infosecinstitute.com/$wp-plugins$/syntaxhighlighter/ [+] Enumerating timthumb files … Checking for 2419 total timthumb files… 100% complete. No timthumb files found 🙁 [+] Finished at Mon Aug 13 22:42:07 2012 |
Можно увидеть, что WPScan не нашел любых уязвимых файлов timthumb, значит наша установленная WordPress защищена.
Есть также плагин Timthumb Vulnerability Scanner доступный через Timthumb, который можно использовать в принципе для тех же самых задач.
2.3. Exploit Scanner
Другой WordPress плагин Exploit Scanner доступен для скачивания и установки. Этот плагин ищет файл и базы данных нашей установки WordPress на предмет признаков, что WordPress был взломан злоумышленником.
2.4. BlindElephant
BlindElephant это программа способная собирать информацию о CMS системах. Она может определить тип CMS и версию, а также собрать информацию о плагинах. Поддерживаемые CMS системы: Drupal, Joomla, Liferay, Mediawiki, Moodle, Movabletype, Oscommerce, Phpbb, Phpmyadmin, Phpnuke, Spip, Tikiwiki, Twiki и WordPress. Для сбора информации о системе WordPress наберем следующее:
# python BlindElephant.py resources.npo-echelon.com wordpress
2.5. CMS Explorer
CMS Explorer в принципе тоже самое, что и BlindElephant, но данная утилта также поддерживает возможность поиска уязвимостей на сайте OSVDB. CMS Explorer поддерживает только следующие CMS системы: Drupal, WordPress, Joomla и Mambo. Снизу приведена команда для сбора информации о CMS системе WordPress:
# perl cms-explorer.pl -url resources.npo-echelon.com -explore -type wordpress -plugins -themes
3. Заключение
Мы рассмотрели техники инвентаризации и сканирования уязвимостей WordPress. Также увидели, что утилита WPScan может быть использована для поиска большинства уявимостей в уже работающей WordPress инсталляции. Для уверенности в безопасности установленной WordPress запускайте утилиту на регулярной основе с последними обновлениями.
Вопрос: а Blindelephant, cvs explorer написаны на других языках (python, perl), соответственно они не входят в состав WPScan и скачиваются отдельно?
Это все разные программы и они есть в BACKTRACK 5