2026年11月12日
2026年11月12日
Как проверить плагины WordPress на уязвимости: WP-CLI, WPScan
Эта статья — локализованная версия японского оригинала. Читать японский оригинал
Между публикацией сведений об уязвимости плагина и началом атак иногда проходит совсем немного времени. Основной порядок такой: узнать, какие плагины и каких версий установлены, сверить их с известными уязвимостями и обновить, если есть исправленная версия, — и регулярно повторять это. В статье по порядку разобраны проверка версий через WP-CLI, сверка через WPScan, чтение баз уязвимостей, проверка на взлом и действия при обнаружении уязвимости. Команды и условия по ценам сверены с официальной документацией в ноябре 2026 года.
1. Составьте список установленных плагинов и версий
Сначала выясните, что и какой версии установлено. Это видно и в админ-панели, в разделе «Плагины» (Plugins) → «Установленные» (Installed Plugins), но с WP-CLI список можно сохранить.
# Показать имя, версию, состояние (включён/отключён) и наличие обновления
wp plugin list --fields=name,version,status,update
# Показать только те, для которых есть обновление
wp plugin list --update=available
# Сохранить в JSON для записи
wp plugin list --fields=name,version,status --format=json > plugins.json
В списке есть и отключённые плагины. Даже отключённые, их файлы остаются на сервере, и к файлам с уязвимостью могут обратиться напрямую, поэтому ненужные плагины лучше удалить. Основы WP-CLI описаны в статье «Как управлять плагинами через WP-CLI».
2. Сверьте с известными уязвимостями через WPScan
WPScan — инструмент командной строки для внешнего анализа сайта на WordPress. Сведения об уязвимостях он получает через API WPScan, поэтому нужно создать учётную запись на wpscan.com и выпустить API-токен.
Согласно странице цен WPScan, бесплатный тариф ограничен некоммерческим использованием, а число обращений к API — 25 в сутки. Для коммерческих сайтов нужна платная лицензия. Без API-токена инструмент работает, но сведения об уязвимостях не отображаются.
# Установка (если ставить через gem Ruby)
gem install wpscan
# Если использовать Docker
docker pull wpscanteam/wpscan
# Найти плагины, для которых сообщалось об уязвимостях
wpscan --url https://example.com --api-token YOUR_API_TOKEN -e vp
# Использовать оба способа обнаружения: passive и aggressive
wpscan --url https://example.com --api-token YOUR_API_TOKEN -e vp --plugins-detection mixed
Основные значения параметра -e таковы.
| Значение | Объект |
|---|---|
vp |
Плагины, для которых сообщалось об уязвимостях |
ap |
Все плагины |
p |
Популярные плагины |
vt |
Темы, для которых сообщалось об уязвимостях |
По умолчанию плагины обнаруживаются в режиме passive, то есть по HTML страниц и т. п. Плагины, не оставляющие следов в HTML, могут остаться незамеченными. Если указать aggressive или mixed, обнаружено будет больше, но вырастет и число запросов.
WPScan разрешается применять только к сайтам, которыми вы управляете, или к тем, на проверку которых получено разрешение. Подробнее см. также «Проверка уязвимостей сайта с помощью WPScan».
3. Уточните подробности в базах уязвимостей
Плагины, названные в результатах WPScan или в новостях о безопасности, изучайте подробнее в следующих базах данных.
- WPScan Vulnerability Database (wpscan.com)
- Wordfence Intelligence (wordfence.com)
- Patchstack Database (patchstack.com)
- NVD (nvd.nist.gov, поиск по номеру CVE)
Обратите внимание на следующее.
| Параметр | Что проверить |
|---|---|
| Затронутые версии | Входит ли ваша версия в диапазон |
| Исправленная версия | Устранится ли проблема обновлением. Иногда исправленной версии ещё нет |
| Необходимые права | Можно ли воспользоваться уязвимостью без входа или нужны права автора или подписчика |
| Критичность (CVSS) | Число от 0 до 10. Чем выше, тем сильнее влияние |
| Тип | XSS, SQL-инъекция, повышение привилегий, загрузка произвольных файлов и т. п. |
Сначала устраняйте те, что эксплуатируются без входа, и те, у которых высокая критичность. Если уязвимость эксплуатируется с правами подписчика, спешите на сайтах, где разрешена регистрация пользователей (сайты с участниками, магазины и т. п.).
4. Проверьте, не изменены ли файлы
Если уязвимость могли использовать, проверьте, остались ли файлы такими, как при распространении. Команда verify-checksums WP-CLI сравнивает файлы с контрольными суммами, опубликованными WordPress.org.
# Проверить все плагины
wp plugin verify-checksums --all
# Проверить только определённый плагин
wp plugin verify-checksums contact-form-7
# Проверить файлы ядра WordPress
wp core verify-checksums
Если проблем нет, выводится сообщение вроде Success: Verified 8 of 8 plugins.. Если есть добавленные или отличающиеся по содержимому файлы, показывается их список.
У платных плагинов, которых нет на WordPress.org, контрольных сумм нет, и этим способом их проверить нельзя. В таком случае скачайте у поставщика ту же версию и сравните файлы.
5. Что делать, если уязвимость найдена
# Если есть исправленная версия: обновить
wp plugin update contact-form-7
# Если исправленной версии нет: отключить, а если не нужен, удалить
wp plugin deactivate vulnerable-plugin
wp plugin delete vulnerable-plugin
# Перед массовым обновлением посмотреть, что будет обновлено
wp plugin update --all --dry-run
vulnerable-plugin — пример. Замените его настоящим слагом (столбец name в wp plugin list).
- Перед обновлением сделайте резервную копию, а после него проверьте, работают ли основные страницы (форма обратной связи, оплата и т. д.).
- Если исправленная версия не выходит и разработка плагина остановлена, подумайте о переходе на другой плагин с той же функциональностью. Если распространение плагина на WordPress.org прекращено, на его странице отображается пометка об этом.
- Если есть следы взлома, одним обновлением не обойтись. Проверьте также, не добавлены ли пользователи-администраторы, нет ли PHP-файлов в uploads и не изменён ли wp-config.php, и при необходимости восстановите сайт из резервной копии.
6. Сделайте проверку привычкой
- В админ-панели, в разделе «Плагины», автообновление можно включить для каждого плагина отдельно (начиная с WordPress 5.5). Включайте его сначала для тех плагинов, после обновления которых меньше опасений, что нарушится отображение. Подробнее см. «Как настроить автообновление плагинов».
- Если WPScan запускается по расписанию через cron, учтите бесплатный лимит 25 обращений в сутки и условие некоммерческого использования.
- Плагин безопасности Wordfence при сканировании тоже сообщает, например, о плагинах, требующих обновления. Как им пользоваться, описано в статье «Сканирование сайта с помощью Wordfence».
Итоги
Проверка плагинов на уязвимости идёт по порядку: составьте список (wp plugin list), сверьте его с известными уязвимостями (WPScan или базы уязвимостей), проверьте файлы на изменения (wp plugin verify-checksums) и устраните проблему обновлением или удалением. Самая необременительная мера — удалять неиспользуемые плагины.
Есть вопросы по WordPress? Издатель сайта находится в Японии и отвечает по-японски. Связаться (по-японски)