
🔥 XSS2Shell — сканер CVE-2026-64638 и набор PoC-инструментов
Массовый сканер на основе поведенческого анализа (behavior-first) и генератор PoC-страниц доказательного уровня для цепочки XSS-to-RCE без предварительной аутентификации, затрагивающей 500M+ веб-сайтов на WordPress.
Только обнаружение. Без эксплойтов. Создан для программ bug bounty и blue teams.
Что это? • Быстрый старт • Shodan-дорки • Использование • Матрица решений • Обнаружение • FAQ
Найдите потенциально уязвимые экземпляры WordPress по всему интернету перед сканированием:
http.component:"wordpress" -http.title:"Just a moment"
Находит сайты на WordPress, исключая режим Cloudflare «I'm Under Attack» и страницы защиты от ботов, которые блокируют автоматические запросы или требуют прохождения проверки (challenge).
http.component:"wordpress" http.title:"Log In"
Возвращает только страницы входа WordPress — ту самую поверхность атаки, которую использует CVE-2026-64638.
http.component:"wordpress" "wp-content" "?ver=7.0" -"?ver=7.0.3"
Помечает экземпляры WordPress 7.0.x без патча 7.0.3 по отпечаткам версий ресурсов (asset version fingerprinting).
http.component:"wordpress" http.html:"wp-login.php"
Находит сайты, где wp-login.php доступен, но не обязательно является текущей страницей — более широкое покрытие.
http.component:"wordpress" -http.title:"Just a moment" -http.title:"Attention Required" -org:"Cloudflare"
Агрессивный фильтр, который отсеивает большинство целей, стоящих за Cloudflare. Используйте при масштабном сканировании с --active — Cloudflare ограничит частоту запросов или заблокирует пробный запрос.
Совет: Экспортируйте результаты Shodan через
shodan downloadи передавайте имена хостов напрямую вxss2shell_mass.py -i.
7 августа 2026 года компания pwn.ai раскрыла CVE-2026-64638 (XSS2Shell) — критическую уязвимость межсайтового скриптинга без предварительной аутентификации в ядре WordPress, которая выстраивается в цепочку вплоть до удалённого выполнения кода на сервере. [citation:pwn.ai blog]
Ошибка эксплуатирует расхождение парсеров между strip_tags() в PHP и wp_kses_post() в WordPress:
strip_tags() определяет HTML-теги по символу <, за которым сразу следует буква. < area id=...> (с пробелом) обрабатывается как текст — и сохраняется.wp_kses_post() (KSES) распознаёт < area как допустимый элемент <area> — а <area> входит в белый список KSES. [citation:pwn.ai blog]Одна неудачная попытка входа с особым образом сформированным именем пользователя < area id=ajaxurl href=/?rest_route=/&_method=GET&_jsonp=alert>... обходит оба санитайзера, отображается как живой DOM на странице входа, перехватывает собственный скрипт WordPress user-profile.js через DOM clobbering и вызывает alert() в origin WordPress — без единого клика, без аутентификации, без файлов cookie. [citation:pwn.ai blog]
Повышение привилегий до вошедшего в систему администратора? Тот же примитив похищает пароли приложений (Application Passwords) через Same Origin Method Execution (SOME), загружает вредоносный плагин и выполняет PHP-код от имени www-data. [citation:pwn.ai blog] [citation:hadrian.io blog]
Затронуто: WordPress 6.4 – 7.0.2 — исправлено в 7.0.3, бэкпорты до 4.7+.
Масштаб: ~500 миллионов веб-сайтов на момент раскрытия. [citation:pwn.ai blog]
| Ресурс | Ссылка |
|---|---|
| Первоначальное раскрытие (pwn.ai) | pwn.ai/blog/xss2shell |
| Технический анализ Hadrian | hadrian.io/blog/wordpress-xss2shell |
| Консультация WordPress (GHSA) | GHSA-52p2-r8wf-jcrf |
| Исследование SOME-атак (2022) | pwn.ai/blog/bypass-csp-using-wordpress |
| Релиз WordPress 7.0.3 | wordpress.org/news/2026/08/wordpress-7-0-3-release |
Это инструментарий только для обнаружения. Он не превращает уязвимость в эксплойт — он даёт исследователям безопасности, баг-хантерам и blue team всё необходимое, чтобы:
«Строка версии говорит о том, каким должен быть уровень патчей.
Только поведение санитайзера на странице входа говорит о том, срабатывает ли ошибка на самом деле.»
Управляемые хостинги незаметно бэкпортят патчи безопасности, не меняя строку версии. Плагины усиления защиты входа полностью заменяют сообщение об ошибке, убивая канал отражения даже на небезопасных версиях. Сканеры, работающие только по версиям, дают ложные срабатывания и ложные отрицательные результаты. Этот сканер отправляет один безвредный пробный запрос и классифицирует фактическое поведение санитайзера.
git clone https://github.com/jakestone/xss2shell.git
cd xss2shell
pip install -r requirements.txt
# Passive — no probes sent to target, version + endpoint fingerprinting only
python3 xss2shell_mass.py -i domains.txt -o results
# Active — sends ONE benign failed-login per host (authorized assets only!)
python3 xss2shell_mass.py -i domains.txt -o results --active --workers 80
# Single target
python3 make_poc.py --target https://blog.example.com
# Batch from scanner output
python3 make_poc.py --from-results results.csv -o pocs/
Откройте созданный файл .poc.html в браузере во время записи видео → если сработает alert(), вы зафиксировали доказательство XSS без аутентификации.
xss2shell_mass.py)usage: xss2shell_mass.py [-h] -i INPUT [-o OUTPUT]
[--active] [--workers WORKERS]
[--timeout TIMEOUT] [--quiet]