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? Издатель сайта находится в Японии и отвечает по-японски. Связаться (по-японски)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲