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 не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

Юрий Кочетов

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

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS