Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
WPSniper — Детектор CVE-2026-87902. Класс LFI в WordPress get_page_template. Только обнаружение. Авторизованная лаборатория. | Kitploit
Инструменты/GitHubGitHub/ynsmroztas/wpsniper
РазведкаСканеры уязвимостейСканеры веб-уязвимостейАнализ уязвимостейСбор информацииВеб-безопасностьТестирование на Проникновение
GitHubynsmroztas/wpsniper

WPSniper

Детектор CVE-2026-87902. Класс LFI в WordPress get_page_template. Только обнаружение. Авторизованная лаборатория.

Репозиторий
111 ч 2 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

WPSniper — детектор CVE-2026-87902

WPSniper

Детектор CVE-2026-87902 для WordPress Core.

get_page_template() можно направить так, чтобы разрешение шаблона страницы включало читаемый локальный .php-файл за пределами активной темы. WPSniper фингерпринтит сайт, выбирает опубликованный page_id, проверяет класс include и выводит VULN только тогда, когда сильный баннер PEAR уникален для тела пробы.

Только детект. Никаких веб-шеллов. Никакого pearcmd config-create. Никакого выполнения команд ОС.

root@kitploit:~
python3 WPSniper.py -u https://lab.wordpress.local --shell

Пайплайн:

root@kitploit:~
subfinder -d lab.example -silent | httpx -silent | python3 WPSniper.py -t 8

Ограниченная область. Своя лаборатория. Это и есть вся лицензия на запуск.


Отредактированная лабораторная сессия WPSniper

Класс

WordPress строит имя шаблона страницы из производной от URL, url-декодированной переменной запроса pagename:

page-{$pagename}.php

Затем locate_template() включает этот файл. В уязвимых сборках разрешённый путь не принудительно остаётся внутри разрешённой директории темы. Двойное URL-кодирование обхода в pagename переживает sanitize_title достаточно долго, чтобы get_page_template() декодировал его один раз и вышел за пределы дерева темы.

Перед закрытым include стоят два предусловия:

  1. У активной родительской или дочерней темы есть директория верхнего уровня, имя которой начинается с page- (WordPress документирует page-templates/ — Twenty Twelve, Twenty Fourteen, Neve, Hestia, Sydney и другие).
  2. Для учётной записи веб-сервера существует читаемая .php-цель. Детектор использует стандартные баннеры PEAR CLI как оракул include. Он его не создаёт.

RCE — это возможное продолжение, когда эти условия плюс записываемый/исполняемый гаджет совпадают. Это продолжение отсутствует в данном репозитории.

Автор находки по CVE: Robert (ressl) через WordPress HackerOne. Advisory: GHSA-7hp8-65ch-5whp.


Поток детекта WPSniper

Что делает оператор

Таблица версий встроена. 4.7.0–7.1.1 — уязвимое окно. Исправленные точки: 7.1.2, 7.0.6, 6.9.9, 6.8.10 … вплоть до 4.7.37.

Правило подтверждения

Маркетинговая страница, где в блог-посте написано «pearcmd», — это не попадание.

VULN только когда всё это верно:

  • Дайджест тела пробы ≠ дайджест базового ?page_id=
  • Хотя бы один сильный токен уникален для пробы (PEAR Version:, Usage: pear, PEAR_Config, Commands for pear, config-create, DEPRECATED: PEAR commands, pear.php)
  • Слабый токен pearcmd / PEAR сам по себе отбрасывается, особенно если он уже присутствовал в базовом HTML

INFO = уязвимая версия и/или директория page-templates, include не закрыт. Не заводите critical на INFO.

SAFE = исправленная ветка, или include идентичен базовому.

SKIP = не WordPress, плохой URL.

/etc/passwd — неправильный оракул для этой CVE. locate_template() добавляет .php. Интерактивная команда passwd существует, чтобы вы сами это увидели. Появление блока root:x:0:0: необычно и должно проверяться вручную.

Установка

root@kitploit:~
python3 -m pip install -r requirements.txt
python3 WPSniper.py -u https://lab.wordpress.local

Требуется requests.

Флаги

--shell игнорируется в пайплайне. Это сделано намеренно.

Интерактивная оболочка

root@kitploit:~
python3 WPSniper.py -u https://lab.wordpress.local --shell
root@kitploit:~
[email protected] ▶
  1 fp        version / theme / patched?
  2 pages     REST published pages
  3 theme     page-templates directory
  4 probe     PEAR include + baseline diff   (no write)
  5 diff      same, print Δ + tokens
  6 passwd    try …/etc/passwd               (this class includes *.php)
  7 include P include a .php path without suffix
  8 save      last body → /tmp/wpsniper-probe.html
  9 help
  0 exit

Каждая проба выводит полный URL и готовый к копированию curl. Используйте его в отчёте. Не придумывайте второй запрос.

7 include предназначен для авторизованного лабораторного файла, который вы уже разместили. Пример имени в тексте справки — это маркер-свидетель, а не дроппер.

Лабораторная сессия (отредактировано)

root@kitploit:~
WPSniper v1.3   CVE-2026-87902  get_page_template LFI
[radar] target  https://lab.wordpress.local
[radar] generator=6.8.3  theme=twentytwelve  status=affected
[radar] page_id=2
[radar] theme dir /wp-content/themes/twentytwelve/page-templates/ → 403

VULN  lab.wordpress.local  unique=['PEAR Version:','Usage: pear'] Δlen=+18420

patched  7.1.2 · 7.0.6 · 6.8.10 · backports to 4.7.37

Хост на этой странице — лабораторная метка. Живые имена хостов клиентов не должны попадать в публичный скриншот.

Патч

Обновитесь до 7.1.2 или бэкпорта для вашей ветки:

7.0.6 · 6.9.9 · 6.8.10 · 6.7.9 · 6.6.9 · 6.5.12 · 6.4.12 · 6.3.12 · 6.2.13 · 6.1.14 · 6.0.16 · 5.9.18 … вплоть до 4.7.37.

7.1.2 также требует, чтобы разрешённый путь шаблона оставался внутри разрешённой директории темы. Это и есть настоящее исправление, а не правило WAF.

Чего этот репозиторий делать не будет

  • Никаких веб-шеллов, никакого pearcmd config-create, никакой обёртки system()
  • Никакого плейбука для массового сканирования интернета
  • Никаких утверждений, что каждая машина на WordPress 6.x — это RCE
  • Никакого сырого /etc/passwd в качестве основного подтверждения

Если вам нужна находка: приложите curl, который WPSniper уже вывел, уникальные сильные токены и несовпадение базового дайджеста.

Отказ от ответственности

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

Ссылки

  • Сайт: ynsmroztas.github.io
  • X: @ynsmroztas
  • CVE: CVE-2026-87902

mitsec · Yunus Emre Öztaş

Скачать инструмент
ШагДействиеСигнал
1Главная + generator + /feed/WordPress? версия? слаг темы?
2REST /wp-json/wp/v2/pages или page_id= в HTMLОпубликованная страница, чтобы путь шаблона действительно сработал
3GET /wp-content/themes/{slug}/page-templates/200 / 401 / 403 = директория существует
4Базовый ?page_id=N против пробы pagename=Дайджест тела + уникальные сильные токены PEAR
ФлагЗначение
-u URLОдна цель
-l fileСписок URL
stdinsubfinder | httpx | WPSniper
-t NПотоки для списка (по умолчанию 6)
-qТихие строки + сводка
--shellИнтерактивная проба для одного -u
--timeoutСекунды (по умолчанию 14)