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-токен, без нього ви бачите лише половину картини. Почніть із трьох команд із блоку «Швидкий огляд» вище. Пів хвилини, і ви точно знаєте, чи є у сайту відкриті вразливості. А який інструмент безпеки виручав вас на практиці, напишіть у коментарях.