Skip to content

Всё для WordPress, веб-разработки — и не только

🔍 Использование WPScan: поиск уязвимостей WordPress 2026

🔍 Использование WPScan: поиск уязвимостей WordPress 2026

Вы обновили плагины, настроили HTTPS и поставили брандмауэр. Сайт выглядит защищённым. Но откуда вы знаете, что в одном из установленных плагинов нет уязвимости, которую уже эксплуатируют прямо сейчас?

Ручная сверка с базой уязвимостей отнимает часы. WPScan делает это за полминуты: консольный сканер безопасности WordPress с открытым исходным кодом, который по данным собственной базы отслеживает более 73 000 уязвимостей ядра, плагинов и тем. Ниже: установка, API-токен, базовое и расширенное сканирование, подбор паролей.

💡 Быстрый обзор:

  • Установите WPScan через Ruby gem, Docker или Homebrew и обновите базу метаданных командой wpscan --update

  • Зарегистрируйте бесплатный API-токен на wpscan.com: 25 запросов в день, без токена сканер не показывает данные об уязвимостях

  • Запустите базовое сканирование: wpscan --url https://ваш-сайт.com --api-token ВАШ_ТОКЕН

  • Проверьте уязвимые плагины и темы флагами -e vp и -e vt, перечислите пользователей через -e u

  • Для подбора паролей подготовьте файл-словарь и передайте его флагом --passwords

Что такое WPScan

WPScan, бесплатный для некоммерческого использования сканер безопасности WordPress, написан на Ruby. Первый релиз вышел в июне 2011 года, и с тех пор инструмент стал стандартом де-факто для пентеста WordPress-сайтов.

Сканер сверяет установленную версию WordPress, активные плагины и темы с WordPress Vulnerability Database на wpscan.com, которую поддерживает команда специалистов по безопасности. По данным базы в ней задокументировано более 73 000 уязвимостей ядра, плагинов и тем. Каждую запись вручную верифицирует выделенная команда WordPress-экспертов. С 2023 года WPScan является CVE Numbering Authority и напрямую присваивает CVE-номера уязвимостям в экосистеме WordPress.

Помимо уязвимостей, WPScan умеет перечислять логины пользователей через REST API и фиды авторов, подбирать пароли по словарю, находить открытые бэкапы wp-config.php, дампы базы данных и открытые логи ошибок.

Важный нюанс лицензии: бесплатное использование CLI-сканера разрешено только в некоммерческих целях. Агентствам, которые сканируют сайты клиентов, нужна платная подписка. Условия описаны на официальном сайте WPScan.

Установка и обновление

WPScan доступен тремя способами. Выберите тот, который вписывается в ваш рабочий процесс.

Ruby gem, универсальный вариант для Linux, macOS и Windows с установленным Ruby:

1gem install wpscan

Docker, изолированное окружение без зависимостей:

1docker pull wpscanteam/wpscan

Пример запуска через Docker:

1docker run -it --rm wpscanteam/wpscan --url https://example.com -e u

Homebrew, для macOS:

1brew install wpscanteam/tap/wpscan

После установки первым делом обновите локальную базу метаданных. Она содержит сведения о последних версиях плагинов и тем, без неё сканер не определит, что установленная версия устарела. Информация об уязвимостях запрашивается отдельно через API в реальном времени.

1wpscan --update

Обновление занимает несколько секунд. В выводе появится версия WPScan и подтверждение актуальности базы. Повторяйте wpscan --update перед каждым аудитом: разработчики выпускают обновления метаданных несколько раз в неделю.

API-токен: ключ к данным об уязвимостях

Самая частая ошибка новичков: запустить wpscan --url сайт.com без токена и удивляться, почему сканер молчит об уязвимостях. Без токена WPScan работает в режиме «только метаданные». Он сообщит, что плагин устарел, но не скажет, какие CVE с ним связаны.

Зарегистрируйтесь на wpscan.com, это бесплатно и занимает минуту. Бесплатный план даёт 25 API-запросов в день. Один скан расходует 1 запрос на версию WordPress, 1 запрос на каждый установленный плагин и 1 запрос на каждую тему. На типичном WordPress-сайте установлено более десятка плагинов, поэтому бесплатного лимита хватит на одно полное сканирование в сутки.

Токен передаётся флагом --api-token при каждом запуске:

1wpscan --url https://example.com --api-token ВАШ_ТОКЕН

Чтобы не вводить токен в каждой команде, сохраните его в конфигурационный файл ~/.wpscan/scan.yml:

1api_token: ВАШ_ТОКЕН

После этого WPScan подхватит токен автоматически.

Базовое сканирование сайта

Минимальная команда для аудита:

1wpscan --url https://example.com --api-token ВАШ_ТОКЕН

Сканер определит версию WordPress, активную тему, обнаружит открытое отображение номеров версий и проверит базовые конфигурационные проблемы: доступность wp-cron и readme.html, директорию загрузок, возможность регистрации пользователей.

Вывод структурирован цветовыми маркерами: зелёный для информационных сообщений, жёлтый для предупреждений, красный для найденных уязвимостей. Каждая уязвимость сопровождается ссылкой на карточку в базе WPScan с описанием вектора атаки, затронутых версий и рекомендаций по исправлению.

Базовое сканирование обычно укладывается в минуту. Точное время зависит от размера сайта и скорости хостинга.

Поиск уязвимых плагинов

Плагины, главный вектор атак на WordPress. По статистике WPScan, более 90% известных уязвимостей приходится именно на плагины. Команда для проверки:

1wpscan --url https://example.com -e vp --api-token ВАШ_ТОКЕН

Флаг -e vp (enumerate vulnerable plugins) перечисляет только плагины с известными уязвимостями. Это самый быстрый и практичный режим: он сверяет установленные плагины с базой и сообщает лишь о тех, для которых есть задокументированные проблемы.

По умолчанию WPScan использует пассивный режим обнаружения, анализирует HTML-код страниц без лишних запросов. Чтобы получить максимальную отдачу ценой дополнительной нагрузки на сервер, переключитесь на смешанный режим:

1wpscan --url https://example.com -e vp --plugins-detection mixed --api-token ВАШ_ТОКЕН

Режим mixed сначала применяет пассивный анализ, а затем агрессивно проверяет известные пути плагинов для обнаружения скрытых и неактивных установок.

Если сканер нашёл уязвимый плагин, обновите его до последней версии. Разработчик почти наверняка уже выпустил патч. Если обновления нет и плагин заброшен, удалите его и найдите аналог. Оставлять плагин с известной уязвимостью на рабочем сайте нельзя.

Поиск уязвимых тем

Темы проверяются аналогично плагинам:

1wpscan --url https://example.com -e vt --api-token ВАШ_ТОКЕН

Флаг -e vt (vulnerable themes) проверяет активную тему и все установленные темы на наличие известных уязвимостей. Темы атакуют реже плагинов, но уязвимости в них встречаются, особенно в темах со встроенными конструкторами страниц и слайдерами.

Режим обнаружения тем по умолчанию агрессивный, поскольку пассивный анализ часто пропускает неактивные темы. Если сервер слабый и нагрузка критична, ограничьтесь пассивным режимом:

1wpscan --url https://example.com -e vt --themes-detection passive --api-token ВАШ_ТОКЕН

Обнаружив уязвимую тему, действуйте по тому же принципу: обновите или удалите. Дочерние темы наследуют уязвимости родительских, проверяйте обе.

Перечисление пользователей

Злоумышленнику, знающему логины WordPress-пользователей, достаточно подобрать пароль. WPScan показывает, какие логины видны снаружи:

1wpscan --url https://example.com -e u

Сканер перебирает ID пользователей и извлекает логины из REST API, фидов авторов (/author/имя/) и других публичных точек. Результат выглядит так:

1[i] User(s) Identified:
2[+] admin
3[+] editor
4[+] serg

В идеале вы не должны видеть ни одного логина. Если WPScan нашёл пользователей, примите меры:

  • Установите псевдоним для отображения, отличный от логина, в настройках профиля.
  • Отключите REST API для неавторизованных посетителей через плагин или .htaccess.
  • Брандмауэр уровня DNS, например Sucuri или Cloudflare, заблокирует сканер ещё на подлёте: вы увидите ошибку таймаута вместо списка пользователей.
Сканирование WPScan остановлено межсетевым экраном Sucuri CloudProxy WAF

Актуальные версии WordPress ограничивают перечисление через REST API, но темы и плагины могут открывать обходные пути. Полагаться только на ядро недостаточно.

Подбор паролей

WPScan поддерживает словарный перебор паролей. Сканер пытается авторизоваться под каждым найденным пользователем с каждым паролем из файла-списка. Операция ресурсоёмкая, но результат того стоит: вы узнаете, не использует ли кто-то из администраторов qwerty123.

Подготовьте текстовый файл с паролями, по одному на строку, и выполните:

1wpscan --url https://example.com -e u --passwords /путь/к/passwords.txt

Готовые словари есть в Kali Linux (/usr/share/wordlists/) и в открытых источниках вроде репозитория SecLists на GitHub. Для базовой проверки хватит файла из 500-1000 наиболее распространённых паролей.

Параметр --threads N управляет количеством одновременных попыток. Значение по умолчанию равно 5. Увеличение до 20-30 ускорит перебор, но создаст заметную нагрузку на сервер и может сработать защита хостинга.

Перед запуском брутфорса сделайте бэкап сайта и предупредите хостинг-провайдера: некоторые блокируют IP за множественные неудачные попытки входа.

Дополнительные возможности

WPScan умеет больше, чем базовый аудит плагинов и пользователей. Вот несколько полезных сценариев.

Поиск всех плагинов, не только уязвимых:

1wpscan --url https://example.com -e ap --api-token ВАШ_ТОКЕН

Флаг -e ap (all plugins) перебирает все плагины из базы WPScan. Операция занимает заметное время. Используйте для полного аудита, а не для регулярных проверок.

Обнаружение бэкапов и дампов:

1wpscan --url https://example.com -e cb,dbe

Флаги cb (config backups) и dbe (database exports) ищут публично доступные бэкапы wp-config.php и дампы SQL, случайно оставленные плагинами резервного копирования. Такой файл в открытом доступе критически опасен: злоумышленник получает учётные данные базы данных.

Тихое сканирование:

1wpscan --url https://example.com --stealthy --api-token ВАШ_ТОКЕН

Флаг --stealthy добавляет случайные задержки между запросами, маскируя активность сканера под поведение обычного посетителя. Полезно, если сервер агрессивно банит подозрительную активность.

Перечисление медиафайлов:

1wpscan --url https://example.com -e m1-100

Проверяет ID медиафайлов в заданном диапазоне. Помогает обнаружить конфиденциальные документы, доступные по прямой ссылке, и бэкапы, загруженные мимо медиатеки.

Полный видеоурок по WPScan, от установки до продвинутых сценариев:

⁉️🤔 Частые вопросы

Нужен ли WPScan, если уже стоит Jetpack Protect или Wordfence?

Да, нужен. Плагины безопасности работают изнутри WordPress и блокируют атаки в реальном времени. WPScan смотрит на сайт извне, так же как злоумышленник. Он находит проблемы, которые плагин не видит: открытые бэкапы, перечисление пользователей через нестандартные векторы, уязвимости в неактивных, но не удалённых плагинах. Оба подхода вместе дают реальную защиту в глубину.

WPScan безопасен для моего сайта? Не положит сервер?

Сканер отправляет стандартные HTTP-запросы, такие же как обычный посетитель. В пассивном режиме он только анализирует HTML без дополнительной нагрузки. Агрессивный режим с полным перебором плагинов (-e ap) генерирует сотни запросов и может замедлить слабый хостинг. Для регулярных проверок используйте -e vp,vt,u, это несколько десятков запросов, безопасных для любого сервера.

Можно ли автоматизировать сканирование?

Да. Для разработчиков подойдёт cron-задача, запускающая Docker-контейнер раз в неделю и отправляющая отчёт на почту. Для всех остальных, сервис WPScan.com автоматически сканирует сайт по расписанию и присылает уведомления о новых уязвимостях. Оптимальная периодичность: полное сканирование раз в неделю, проверки высокоприоритетных компонентов ежедневно. Для ручных аудитов достаточно бесплатного CLI, для постоянного мониторинга стоит рассмотреть автоматизированное решение.

Что делать, если WPScan нашёл уязвимость, а обновления нет?

Плагин заброшен разработчиком. Алгоритм: (1) проверьте, эксплуатируется ли уязвимость активно, карточка в базе WPScan содержит эту информацию; (2) если атак нет и плагин критичен для бизнеса, временно ограничьте доступ к нему через .htaccess и запланируйте замену; (3) если атаки зафиксированы, удалите плагин немедленно. Компромисс между функциональностью и безопасностью здесь невозможен.

Чем WPScan отличается от других WordPress-сканеров?

WPScan, единственный сканер с выделенной исследовательской базой уязвимостей, существующей более десяти лет. Альтернативы вроде WPSeku перебирают плагины по статическому списку без детальных карточек CVE. WPScan поддерживается Automattic через партнёрство с Jetpack, что гарантирует долгосрочное развитие проекта.

Что выбрать: CLI, Docker или SaaS

Выбор способа зависит от ваших задач. Быстрая сводка:

Вариант

Для кого

Периодичность

Плюс

Docker

Один сайт, разовый аудит

Раз в месяц

Нет зависимостей

Ruby gem + cron

Несколько сайтов

Еженедельно

Гибкие отчёты

WPScan SaaS

Агентство, 10+ сайтов

Постоянно

Уведомления, дашборд

  • Если у вас один сайт и нужна разовая проверка, берите Docker: одна команда, ноль зависимостей.
  • Если сайтов больше десяти и нужны регулярные отчёты, Ruby gem в cron-задаче справится.
  • Если агентство с сотней клиентских сайтов, подписка WPScan SaaS снимет головную боль с мониторингом.

Не забудьте про API-токен, без него вы видите лишь половину картины. Начните с трёх команд из блока «Быстрый обзор» выше. Полминуты, и вы точно знаете, есть ли у сайта открытые уязвимости. А какой инструмент безопасности выручал вас на практике, напишите в комментариях.