Безопасность WordPress

2 комментария

Существует множество утилит для проверки безопасности системы управления контентом (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 запускайте утилиту на регулярной основе с последними обновлениями.

Possibly Related Posts:


Рубрика: Аудит информационной безопасности, Аудит кода. Вы можете следить за отзывами через RSS 2.0. Вы можете оставить отзыв, или трекбек со своего сайта.

2 Отзывов на «Безопасность WordPress»


  1. Андрей Фадин

    Вопрос: а Blindelephant, cvs explorer написаны на других языках (python, perl), соответственно они не входят в состав WPScan и скачиваются отдельно?

  2. Константин

    Это все разные программы и они есть в BACKTRACK 5