WPScan — полный обзор с примерами для защиты WordPress в 2025 году

WPScan — полный обзор с примерами для защиты WordPress в 2025 году

Если ваш WordPress‑сайт всё ещё гуляет по интернету без брони, самое время исправить недоразумение. WPScan — это «швейцарский нож» пентестера, который за десять лет эволюции превратился из скрипта на Ruby в почти обязательный инструмент DevSecOps‑чек‑листа. В этом материале собраны свежие функции, варианты установки, практические примеры запуска и автоматизации, а ещё пригоршня личных комментариев, чтобы текст не напоминал сухую документацию.

Что нового в WPScan к маю 2025 года

Команда проекта не дремлет, и за последние пару лет инструмент получил несколько ощутимых апдейтов:

  • Docker‑образ теперь выпускается синхронно с GitHub‑релизами. Сканер стартует без кучи Ruby‑зависимостей, а обновление превращается в банальный docker pull.
  • Поддержка формата SARIF делает интеграцию с GitHub Advanced Security делом одного шага — отчёты попадают в Security tab без лишних плясок.
  • Асимметричное распараллеливание отделяет «тяжёлые» запросы (например, brute‑force) от пассивного анализа, так что слабенький shared‑хостинг перестаёт падать в оморок при первом же скане.
  • Новая модель лицензирования WPVulnDB: по‑умолчанию даётся 25 запросов в день бесплатно, всё, что сверху, требует токен или подписку. Новости кто‑то воспринял с ворчанием, но спокойная аналитика показывает — 25 запросов покрывают потребности большинства одиночных сайтов.
  • Команда перелопатила движок обнаружения коротких JSON‑эндпоинтов, благодаря чему WPScan теперь ловит RCE во встроенных REST API быстрее, чем вы успеваете допить утренний раф.

Установка: «а можно без Ruby?»

Ниже — три рабочих сценария, каждый со своими плюсами и маленькими «но».

Linux / macOS через пакетный менеджер

Классика выглядит так:

sudo gem install wpscan

Ставится быстро, но тянет половину Rubygems, которые потом пугающе обновлять. Если ваш сервер — не экспериментальный полигон, лучше посмотреть на Docker или пакеты репозитория.

Docker — самое быстрое свидание

docker pull wpscanteam/wpscan
 docker run --rm -it wpscanteam/wpscan --help
 

Устанавливается за секунды, никаких зависимостей, а переход на новую версию — ещё один docker pull. Минус ровно один: контейнер придётся подружить c локальной сетью, если вдруг сканить нужно сайты внутри контура.

Windows через WSL 2

К концу 2025‑го это уже не «танцы с бубном», а рутинная практика. Ставим Ubuntu из Microsoft Store, затем sudo apt install docker.io, и используем тот же сценарий с контейнером.

Ваш первый скан: «а страшно ли?»

Минимальная команда выглядит до безобразия просто:

wpscan --url https://example.com --enumerate p
 

Опция --enumerate p просит WPScan перечислить плагины. Уже на этот скромный запрос инструмент может выдать сюрприз: плагин 2018 года с дырой RCE. Хотите полноценный отчёт в JSON? Добавьте API‑токен и флаг --format json:

wpscan --url https://example.com 
        --api-token $WPSCAN_API_TOKEN 
        --format json -o report.json
 

Получившийся файл легко скормить SIEM или CI/CD‑пайплайну. В продакшене такая автоматизация экономит часы рутинной проверки.

Разбор вывода: читаем результат

WPScan сортирует находки по важности (Info, Warning, Critical) и даёт прямую ссылку на описание уязвимости в WPVulnDB. Для критичных багов сразу видно CVSS‑балл, номер CVE, а иногда и готовый PoC. Совет банален: не бросайте вывод сканнера после первых двух строк. Пролистайте до конца, чтобы не пропустить уязвимости в отключённых плагинах — они лежат на диске и всё ещё представляют риск.

Расширенные приёмы

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

Известная «фишка» WordPress — удобный JSON‑эндпоинт /wp-json/wp/v2/users. WPScan умеет аккуратно собирать логины авторов:

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

Зачем это нужно? Во‑первых, чтобы проверить, нет ли в базе «admin» или «test». Во‑вторых, чтобы запустить таргетированный brute‑force со словарём корпоративных паролей, если такая задача стоит.

Комбо‑скан: плагины, темы, база данных

wpscan --url https://example.com -e vp,vt,cb
 

vp — плагины, vt — темы, cb — back‑up плагины баз данных. Последние часто оставляют открытые ZIP‑архивы, которые индексируются поисковиками. Да, вы правильно поняли: базу сайта можно скачать, если не закрыть эту дыру.

Брут Force, но осторожно

Хостинги давно блокируют IP после серии неудачных логинов, поэтому небольшой «троттлинг» спасёт нервную систему:

wpscan --url https://example.com 
        --passwords rockyou.txt 
        --throttle 0.6 
        --random-user-agent
 

Половина успеха — грамотно подобранный словарь. Если тестируете внутренний ресурс, попробуйте добавить политики компании или имена проектов в начале словаря.

Автоматизация: WPScan в DevSecOps‑пайплайне

Проще всего — GitHub Actions. Базовый job занимает пять строк:

jobs:
   scan:
     runs-on: ubuntu-latest
     steps:
       - name: Scan prod
         run: docker run --rm wpscanteam/wpscan 
              --url ${{ secrets.PROD_URL }} 
              --api-token ${{ secrets.WPS_TOKEN }} 
              --format sarif -o result.sarif
 

GitHub «съест» отчёт и превратит его в список проблем, где можно выставлять приоритеты и создаваться задачи. На GitLab всё решается похожим образом через артефакты.

Cron‑экономика: ежедневно, но бесплатно

Бесплатный лимит в 25 запросов в сутки — головная боль, если у вас целый зоопарк сайтов. Есть пара лайфхаков, чтобы не разориться:

  • Сканируйте в разные дни: сегодня продакшен, завтра staging, послезавтра внутренние тестовые стенды.
  • Используйте --no-update, если знаете, что WPScan запускался пару часов назад — лишний запрос к WPVulnDB не понадобится.
  • Если сайтов больше десятка, дешевле купить тариф WPVulnDB, чем устраивать «ротацию» и рисковать пропустить новый CVE.

Типичные ошибки и как их избежать

  • Запуск без токена. Половина базы WPVulnDB не отобразится, и вы получите ложное чувство безопасности.
  • Brute‑force по живому сайту. Отсутствие delay мгновенно приведёт к бану IP или крешу слабого хоста. Тестируйте на копии или внедряйте прогрессивную задержку.
  • Отключённые темы/плагины. Они всё ещё лежат на диске — злоумышленник может вызвать их напрямую. Удаляйте такое наследие, а не просто деактивируйте.
  • Отчёты без анализа. Скан — половина дела. Вторая половина — понять, что именно критично сегодня, а что можно запланировать на завтра.

Полезные дополнения и альтернативы

WPScan — не единственный парень на вечеринке. Если нужен другой подход, присмотритесь:

  1. Wordfence  — тяжелый, но функциональный плагин. Хорош, когда нужен активный файрвол в панели WP.
  2. Sucuri SiteCheck  — облачный сканер. Запускается за минуту, но обнаруживает только видимые извне уязвимости.
  3. Pentest‑Tools WPScan SaaS  — для тех, кто не хочет возиться с CLI, но ценит данные WPVulnDB.

Тем не менее, именно WPScan остаётся золотым стандартом благодаря регулярно обновляемой базе и живому сообществу в Discord и Mastodon, которое щедро делится новыми PoC и идеями по оптимизации.

FAQ — популярные вопросы

WPScan легален?

Да, при условии, что вы сканируете собственные ресурсы или имеете официальное согласие владельца. В противном случае попадает под статью о несанкционированном доступе.

Как часто обновлять базу WPVulnDB?

В продакшене — раз в день. Если речь о ресурсе с повышенными требованиями к безопасности (финтех, медицина), ставьте крон каждые 6 часов и держите отдельный токен для автоматики.

Что делать, если сканер «зависает»?

Проверьте флаги --max-threads и --throttle. Иногда достаточно убавить параллелизм. Ещё одна типовая причина — нестабильный DNS хоста. Запустите dig и убедитесь, что домен резолвится без задержек.

Заключение

WPScan сегодня — больше, чем просто скрипт на Ruby. Это часть экосистемы WordPress‑безопасности, которая помогает держать в узде плагины‑однодневки и темы с сомнительной репутацией. Подключайте сканер к CI/CD, не забывайте про лимиты WPVulnDB и считайте, что половина инцидентов миновала вас стороной. Ну а вторая половина… для неё есть регулярные бэкапы и здравый DevOps‑подход. Удачных сканов и минимум красных строк в отчёте!

WPScan WordPress безопасность сканер уязвимостей примеры установка WPVulnDB DevSecOps CI/CD
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

Твой код — безопасный?

Расскажи, что знаешь о DevSecOps.
Пройди опрос и получи свежий отчет State of DevOps Russia 2025.


Юрий Кочетов

Здесь я делюсь своими не самыми полезными, но крайне забавными мыслями о том, как устроен этот мир. Если вы устали от скучных советов и правильных решений, то вам точно сюда.