
🔍 Использование 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:
1 gem install wpscan
Docker, изолированное окружение без зависимостей:
1 docker pull wpscanteam/wpscan
Пример запуска через Docker:
1 docker run -it --rm wpscanteam/wpscan --url https://example.com -e u
Homebrew, для macOS:
1 brew install wpscanteam/tap/wpscan
После установки первым делом обновите локальную базу метаданных. Она содержит сведения о последних версиях плагинов и тем, без неё сканер не определит, что установленная версия устарела. Информация об уязвимостях запрашивается отдельно через API в реальном времени.
1 wpscan --update
Обновление занимает несколько секунд. В выводе появится версия WPScan и подтверждение актуальности базы. Повторяйте wpscan --update перед каждым аудитом: разработчики выпускают обновления метаданных несколько раз в неделю.
API-токен: ключ к данным об уязвимостях
Самая частая ошибка новичков: запустить wpscan --url сайт.com без токена и удивляться, почему сканер молчит об уязвимостях. Без токена WPScan работает в режиме «только метаданные». Он сообщит, что плагин устарел, но не скажет, какие CVE с ним связаны.
Зарегистрируйтесь на wpscan.com, это бесплатно и занимает минуту. Бесплатный план даёт 25 API-запросов в день. Один скан расходует 1 запрос на версию WordPress, 1 запрос на каждый установленный плагин и 1 запрос на каждую тему. На типичном WordPress-сайте установлено более десятка плагинов, поэтому бесплатного лимита хватит на одно полное сканирование в сутки.
Токен передаётся флагом --api-token при каждом запуске:
1 wpscan --url https://example.com --api-token ВАШ_ТОКЕН
Чтобы не вводить токен в каждой команде, сохраните его в конфигурационный файл ~/.wpscan/scan.yml:
1 api_token: ВАШ_ТОКЕН
После этого WPScan подхватит токен автоматически.
Базовое сканирование сайта
Минимальная команда для аудита:
1 wpscan --url https://example.com --api-token ВАШ_ТОКЕН
Сканер определит версию WordPress, активную тему, обнаружит открытое отображение номеров версий и проверит базовые конфигурационные проблемы: доступность wp-cron и readme.html, директорию загрузок, возможность регистрации пользователей.
Вывод структурирован цветовыми маркерами: зелёный для информационных сообщений, жёлтый для предупреждений, красный для найденных уязвимостей. Каждая уязвимость сопровождается ссылкой на карточку в базе WPScan с описанием вектора атаки, затронутых версий и рекомендаций по исправлению.
Базовое сканирование обычно укладывается в минуту. Точное время зависит от размера сайта и скорости хостинга.
Поиск уязвимых плагинов
Плагины, главный вектор атак на WordPress. По статистике WPScan, более 90% известных уязвимостей приходится именно на плагины. Команда для проверки:
1 wpscan --url https://example.com -e vp --api-token ВАШ_ТОКЕН
Флаг -e vp (enumerate vulnerable plugins) перечисляет только плагины с известными уязвимостями. Это самый быстрый и практичный режим: он сверяет установленные плагины с базой и сообщает лишь о тех, для которых есть задокументированные проблемы.
По умолчанию WPScan использует пассивный режим обнаружения, анализирует HTML-код страниц без лишних запросов. Чтобы получить максимальную отдачу ценой дополнительной нагрузки на сервер, переключитесь на смешанный режим:
1 wpscan --url https://example.com -e vp --plugins-detection mixed --api-token ВАШ_ТОКЕН
Режим mixed сначала применяет пассивный анализ, а затем агрессивно проверяет известные пути плагинов для обнаружения скрытых и неактивных установок.
Если сканер нашёл уязвимый плагин, обновите его до последней версии. Разработчик почти наверняка уже выпустил патч. Если обновления нет и плагин заброшен, удалите его и найдите аналог. Оставлять плагин с известной уязвимостью на рабочем сайте нельзя.
Поиск уязвимых тем
Темы проверяются аналогично плагинам:
1 wpscan --url https://example.com -e vt --api-token ВАШ_ТОКЕН
Флаг -e vt (vulnerable themes) проверяет активную тему и все установленные темы на наличие известных уязвимостей. Темы атакуют реже плагинов, но уязвимости в них встречаются, особенно в темах со встроенными конструкторами страниц и слайдерами.
Режим обнаружения тем по умолчанию агрессивный, поскольку пассивный анализ часто пропускает неактивные темы. Если сервер слабый и нагрузка критична, ограничьтесь пассивным режимом:
1 wpscan --url https://example.com -e vt --themes-detection passive --api-token ВАШ_ТОКЕН
Обнаружив уязвимую тему, действуйте по тому же принципу: обновите или удалите. Дочерние темы наследуют уязвимости родительских, проверяйте обе.
Перечисление пользователей
Злоумышленнику, знающему логины WordPress-пользователей, достаточно подобрать пароль. WPScan показывает, какие логины видны снаружи:
1 wpscan --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, заблокирует сканер ещё на подлёте: вы увидите ошибку таймаута вместо списка пользователей.

Актуальные версии WordPress ограничивают перечисление через REST API, но темы и плагины могут открывать обходные пути. Полагаться только на ядро недостаточно.
Подбор паролей
WPScan поддерживает словарный перебор паролей. Сканер пытается авторизоваться под каждым найденным пользователем с каждым паролем из файла-списка. Операция ресурсоёмкая, но результат того стоит: вы узнаете, не использует ли кто-то из администраторов qwerty123.
Подготовьте текстовый файл с паролями, по одному на строку, и выполните:
1 wpscan --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 умеет больше, чем базовый аудит плагинов и пользователей. Вот несколько полезных сценариев.
Поиск всех плагинов, не только уязвимых:
1 wpscan --url https://example.com -e ap --api-token ВАШ_ТОКЕН
Флаг -e ap (all plugins) перебирает все плагины из базы WPScan. Операция занимает заметное время. Используйте для полного аудита, а не для регулярных проверок.
Обнаружение бэкапов и дампов:
1 wpscan --url https://example.com -e cb,dbe
Флаги cb (config backups) и dbe (database exports) ищут публично доступные бэкапы wp-config.php и дампы SQL, случайно оставленные плагинами резервного копирования. Такой файл в открытом доступе критически опасен: злоумышленник получает учётные данные базы данных.
Тихое сканирование:
1 wpscan --url https://example.com --stealthy --api-token ВАШ_ТОКЕН
Флаг --stealthy добавляет случайные задержки между запросами, маскируя активность сканера под поведение обычного посетителя. Полезно, если сервер агрессивно банит подозрительную активность.
Перечисление медиафайлов:
1 wpscan --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-токен, без него вы видите лишь половину картины. Начните с трёх команд из блока «Быстрый обзор» выше. Полминуты, и вы точно знаете, есть ли у сайта открытые уязвимости. А какой инструмент безопасности выручал вас на практике, напишите в комментариях.



