WPScan — сканер безопасности WordPress
Что такое WPScan
WPScan — это сканер безопасности WordPress, написанный на Ruby и запускаемый из командной строки. Он обнаруживает известные уязвимости в ядре WordPress, плагинах и темах, используя локальную базу данных сигнатур и внешние источники. Кратко: инструмент для поиска уже задокументированных проблем, а не для проведения активных эксплуатаций.
Важно: WPScan выполняет в основном неинвазивные проверки, но всегда запускайте сканирование в рабочем окне и с разрешения владельца сайта.
Основные варианты применения
- Поиск уязвимых версий плагинов и тем.
- Быстрая проверка конфигурации и видимых точек доступа.
- Автоматизация регулярных проверок на CI/CD или на сервере админа.
Предварительные требования
- Ruby — версии 1.9.2 и новее (рекомендуется ≥ 2.2.3).
- curl — 7.21 и новее (рекомендуется последняя версия).
- RubyGems — рекомендуется последняя версия.
- Git — для клонирования репозитория WPScan.
Windows официально не поддерживается: сервер должен работать под Linux или macOS.
Установка на Ubuntu
Сначала установите Git (если ещё не установлен):
sudo apt-get update
sudo apt-get install gitЗатем установите зависимости, требуемые для сборки и работы WPScan:
sudo apt-get install libcurl4-openssl-dev libxml2 libxml2-dev libxslt1-dev ruby-dev build-essentialКлонируйте репозиторий WPScan и установите Ruby-зависимости через bundler:
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test developmentПримечание: если у вас возникают проблемы с правами при установке gem, рассмотрите использование rbenv/rvm или запускайте bundler без sudo в окружении пользователя.
Установка на Arch Linux
Убедитесь, что Ruby и Git установлены, затем выполните команды:
sudo pacman -Syu ruby git libyaml
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
sudo gem install bundler && bundle install --without test
sudo gem install typhoeus nokogiriВажно: для Nokogiri могут потребоваться системные библиотеки (libxml2, libxslt). Установите их через pacman при необходимости.
Использование WPScan
Перед использованием перейдите в каталог WPScan:
cd wpscanПримеры команд:
- Полная проверка сайта (неинвазивная):
ruby wpscan.rb --url http://yoursiteurl.com- Перечисление всех установленных плагинов:
ruby wpscan.rb --url http://yoursiteurl.com --enumerate p- Показ только уязвимых плагинов:
ruby wpscan.rb --url http://yoursiteurl.com --enumerate vp- Перечисление всех тем:
ruby wpscan.rb --url http://yoursiteurl.com --enumerate t- Только уязвимые темы:
ruby wpscan.rb --url http://yoursiteurl.com --enumerate vt- Обновление локальной базы данных WPScan:
ruby wpscan.rb --updateПример вывода
[!] Title: W3 Total Cache - Remote Code Execution
Reference: https://wpvulndb.com/vulnerabilities/6622
Reference: http://www.acunetix.com/blog/web-security-zone/wp-plugins-remote-code-execution/
Reference: http://wordpress.org/support/topic/pwn3d
Reference: http://blog.sucuri.net/2013/04/update-wp-super-cache-and-w3tc-immediately-remote-code-execution-vulnerability-disclosed.html
Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-2010
Reference: https://secunia.com/advisories/53052/
Reference: http://osvdb.org/show/osvdb/92652
Reference: https://www.rapid7.com/db/modules/exploit/unix/webapp/php_wordpress_total_cache
Reference: https://www.exploit-db.com/exploits/25137/
[i] Fixed in: 0.9.2.9
[!] Title: WordPress SEO by Yoast <= 1.7.3.3 - Blind SQL Injection
Reference: https://wpvulndb.com/vulnerabilities/7841
Reference: https://wordpress.org/plugins/wordpress-seo/changelog/
Reference: http://packetstormsecurity.com/files/130811/
Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2292
Reference: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2293
Reference: http://osvdb.org/show/osvdb/119425
Reference: http://osvdb.org/show/osvdb/119426
Reference: https://www.exploit-db.com/exploits/36413/
[i] Fixed in: 1.7.4Из вывода видно, какие плагины уязвимы и в каких версиях уже устранены проблемы. Рекомендуется обновить уязвимые компоненты до безопасных версий.
Мини-методология (как проводить проверку регулярно)
- Подготовка: убедитесь, что у вас есть разрешение на сканирование.
- Обновление: выполните
ruby wpscan.rb --updateдля синхронизации базы. - Быстрая проверка: запустите
ruby wpscan.rb --url http://site --enumerate vp,vt. - Анализ: сопоставьте найденные уязвимости с версиями и ссылками в отчёте.
- Ремедиация: обновите плагины/темы/ядро или примените компенсирующие меры.
- Регрессия: выполните повторную проверку после фикса.
Чек-листы по ролям
Администратор сервера:
- Установить WPScan и настроить периодические задания (cron).
- Держать систему и библиотеки в актуальном состоянии.
- Обновлять базу WPScan перед запусками.
Разработчик/DevOps:
- Автоматизировать сканирование в пайплайне CI для staging.
- Привязывать отчёты к тикетам на исправление уязвимостей.
Аудитор/инженер безопасности:
- Сопоставлять результаты WPScan с внутренними SAST/DAST.
- Вести журнал и оценивать влияние уязвимостей.
Критерии приёмки
- Все выявленные уязвимые плагины/темы обновлены до версий, где CVE/описание устранены, или отключены.
- Регулярные проверки запускаются минимум раз в неделю (или чаще для критичных ресурсов).
- Для каждого критичного уязвимого компонента есть план отката и тесты после обновления.
Важно: автоматические сканеры не заменяют ручной ревью и тестирование в тестовой среде.
Рекомендации по укреплению безопасности
- Минимизируйте количество установленных плагинов.
- Используйте проверенные и активно поддерживаемые плагины с рейтингом/активностью разработки.
- Ограничьте доступ к административной части по IP и применяйте двухфакторную аутентификацию.
- Регулярно делайте резервные копии перед обновлениями.
Конфиденциальность и соответствие (GDPR)
WPScan собирает и использует локальную базу данных и внешние ссылки на сведения об уязвимостях. При сканировании внешних сайтов следите за тем, чтобы вы имели право проводить аудит и не нарушали правила обработки персональных данных. Для публичных сайтов избегайте сбора пользовательских персональных данных во время сканирования.
Когда WPScan не подходит (ограничения)
- Для обнаружения нулевого дня (0-day) и неизвестных векторных атак WPScan неэффективен.
- Для полного аудита безопасности требуется сочетание динамического тестирования, ручного ревью кода и проверки конфигурации сервера.
Быстрый план действий (SOP)
- Обновить базу:
ruby wpscan.rb --update. - Выполнить скан:
ruby wpscan.rb --url http://yoursiteurl.com --enumerate vp,vt. - Сформировать отчёт и приоритизировать по CVSS/классу риска.
- Создать задачи на исправление, проверить в staging.
- После деплоя выполнить регрессионный скан.
Однострочный глоссарий
- CVE — идентификатор публично известной уязвимости.
- WPScan DB — локальная и удалённая база сигнатур уязвимостей для WPScan.
- Enumerate — опция перечисления плагинов/тем/пользователей.
Заключение
WPScan — полезный инструмент для администраторов и специалистов по безопасности, позволяющий быстро находить известные уязвимости в установках WordPress. Он не заменяет полноценный аудит, но при регулярном использовании значительно снижает риск эксплуатации известных проблем.
Если вы уже использовали WPScan — поделитесь практиками и проблемами, с которыми столкнулись, чтобы сообщество могло улучшать процесс проверки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента