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

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

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

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

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

Категории

Все категории
Loading categories
xss2shell — 🔥 XSS2Shell — сканер CVE-2026-64638 и набор PoC-инструментов | Kitploit
Инструменты/GitHubGitHub/0xlipon/xss2shell
Оборонительные ИнструментыРазведкаСканеры уязвимостейСканеры веб-уязвимостейГенерация полезной нагрузкиАнализ уязвимостейЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHub0xlipon/xss2shell

xss2shell

3241 месяц назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →

🔥 XSS2Shell — сканер CVE-2026-64638 и набор PoC-инструментов

РепозиторийСайт
Поделиться
<p align="center">
  <img src="https://img.shields.io/badge/CVE-2026--64638-critical?style=for-the-badge&amp;logo=wordpress&amp;logoColor=white&amp;color=dc143c" alt="CVE-2026-64638">
  <img src="https://img.shields.io/badge/CVSS-8.9-high?style=for-the-badge&amp;color=crimson" alt="CVSS 8.9">
  <img src="https://img.shields.io/badge/discovered_by-pwn.ai-7fd1ff?style=for-the-badge" alt="pwn.ai">
  <img src="https://img.shields.io/badge/python-3.8+-blue?style=for-the-badge&amp;logo=python&amp;logoColor=white" alt="Python 3.8+">
</p>

<h1 align="center">🔥 XSS2Shell — сканер и PoC-инструментарий для CVE-2026-64638</h1>

<p align="center">
  <b>Массовый сканер на основе поведенческого анализа (behavior-first) и генератор PoC-страниц доказательного уровня для цепочки XSS-to-RCE без предварительной аутентификации, затрагивающей 500M+ веб-сайтов на WordPress.</b><br>
  <i>Только обнаружение. Без эксплойтов. Создан для программ bug bounty и blue teams.</i>
</p>

<h4 align="center">Официальный чекер: https://pwn.ai/xss2shell-checker.html</h4>

<p align="center">
  <a href="#-what-is-cve-2026-64638">Что это?</a> •
  <a href="#-quick-start">Быстрый старт</a> •
  <a href="#-shodan-dorks">Shodan-дорки</a> •
  <a href="#-usage">Использование</a> •
  <a href="#-decision-matrix">Матрица решений</a> •
  <a href="#-detection-signatures">Обнаружение</a> •
  <a href="#-faq">FAQ</a>
</p>

---

## 🔎 Shodan-дорки

Найдите потенциально уязвимые экземпляры WordPress по всему интернету перед сканированием:

### Базовое обнаружение 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 доступен, но не обязательно является текущей страницей — более широкое покрытие.

### Исключение Cloudflare (комбинированное)

```
http.component:"wordpress" -http.title:"Just a moment" -http.title:"Attention Required" -org:"Cloudflare"
```

Агрессивный фильтр, который отсеивает большинство целей, стоящих за Cloudflare. Используйте при масштабном сканировании с `--active` — Cloudflare ограничит частоту запросов или заблокирует пробный запрос.

> **Совет:** Экспортируйте результаты Shodan через `shodan download` и передавайте имена хостов напрямую в `xss2shell_mass.py -i`.

---

## 🚨 Что такое CVE-2026-64638?

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](https://pwn.ai/blog/xss2shell) |
| **Технический анализ Hadrian** | [hadrian.io/blog/wordpress-xss2shell](https://hadrian.io/blog/wordpress-xss2shell-unauthenticated-login-screen-xss-to-php-code-execution-cve-2026-64638) |
| **Консультация WordPress (GHSA)** | [GHSA-52p2-r8wf-jcrf](https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-52p2-r8wf-jcrf) |
| **Исследование SOME-атак (2022)** | [pwn.ai/blog/bypass-csp-using-wordpress](https://pwn.ai/blog/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution) |
| **Релиз WordPress 7.0.3** | [wordpress.org/news/2026/08/wordpress-7-0-3-release](https://wordpress.org/news/2026/08/wordpress-7-0-3-release/) |

---

## ⚡ Что делает этот инструментарий

Это инструментарий **только для обнаружения**. Он не превращает уязвимость в эксплойт — он даёт исследователям безопасности, баг-хантерам и blue team всё необходимое, чтобы:

1. **Массово сканировать** сотни хостов WordPress за считанные минуты с точностью поведенческого анализа
2. **Создавать PoC-страницы доказательного уровня**, подтверждающие срабатывание XSS (только alert())
3. **Классифицировать результаты** с точными уровнями уверенности — без ложных срабатываний от сопоставления версий

### 🔑 Почему поведенческий подход (Behavior-First)?

> «Строка версии говорит о том, каким *должен быть* уровень патчей.  
> Только поведение санитайзера на странице входа говорит о том, срабатывает ли ошибка *на самом деле*.»

Управляемые хостинги незаметно бэкпортят патчи безопасности, не меняя строку версии. Плагины усиления защиты входа полностью заменяют сообщение об ошибке, убивая канал отражения даже на небезопасных версиях. **Сканеры, работающие только по версиям, дают ложные срабатывания и ложные отрицательные результаты.** Этот сканер отправляет один безвредный пробный запрос и классифицирует *фактическое поведение санитайзера*.

---

## 🚀 Быстрый старт

### Установка

```bash
git clone https://github.com/jakestone/xss2shell.git
cd xss2shell
pip install -r requirements.txt
```

### Сканирование за 5 минут

```bash
# 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
```

### Генерация PoC с доказательной базой

```bash
# 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]
```

| Флаг | Описание |
|---|---|
| `-i, --input` | Файл с одним хостом на строку (голый домен или полный URL) |
| `-o, --output` | Базовый путь для выходных файлов (создаёт `.csv` + `.json`) |
| `--active` | Включить поведенческий пробный запрос — один неудачный вход на хост |
| `--workers` | Размер пула потоков (по умолчанию: 50, максимум ~200 для хороших соединений) |
| `--timeout` | Тайм-аут HTTP в секундах (по умолчанию: 10) |
| `--quiet` | Выводить только `confirmed_vulnerable`, `vulnerable` и `likely_vulnerable` |

#### Пассивные данные сканирования (без активного пробного запроса, собираются всегда)

1. **Главная страница** → отпечаток WordPress (meta generator, параметры ресурсов `?ver=`, ссылки на wp-content)
2. **Страница входа** → доступность, определение стандартной формы входа, подключение гаджета `user-profile.js`, версии основных ресурсов
3. **REST JSONP smoke-тест** → безвредный GET-запрос на `/?rest_route=/&_method=GET&_jsonp=<random>` — открыт ли путь JSONP?
4. **Запасной вариант через Feed/Readme** → извлечение версии, если отпечаток главной страницы отсутствует

#### Активный пробный запрос (один POST, флаг `--active`)

Отправляет одну неудачную попытку входа с именем пользователя `< area id=<RANDOM> href=/x2s>` и классифицирует HTML-ответ:

- **`bypass`** — настоящий элемент `<area>` с нашей меткой сохранился → расхождение strip_tags/KSES ПОДТВЕРЖДЕНО
- **`escaped`** — метка присутствует, но закодирована в HTML-сущности → установлен патч или усиление защиты
- **`stripped`** — показана стандартная ошибка WP, теги удалены → `acevomod` или установлен патч
- **`closed`** — имя пользователя вообще не отражается → установлен плагин усиления защиты входа

### Генератор PoC (`make_poc.py`)

```
usage: make_poc.py [-h] [--target TARGET] [--from-results FROM_RESULTS]
                   [-o OUTDIR]
```

Генерирует для каждой цели **опубликованную PoC-страницу pwn.ai** — ту самую HTML-форму, которая вызывает `alert()` на незапатченном WordPress. В комментарии включены три варианта полезной нагрузки:

| Вариант | Значение `href` | Когда использовать |
|---|---|---|
| **Стандартный (Default)** | `/?rest_route=/&_method=GET&_jsonp=alert` | Стандартный WordPress |
| **Конверт (Envelope)** | `/?rest_route=/&_method=GET&_envelope=1&_jsonp=alert` | REST возвращает 401 (оборачивается в 200) |
| **Обход WAF (WAF Pivot)** | `/wp-json/wp/v2/statuses/publish?_jsonp=alert&_method=GET` | `?rest_route=` блокируется WAF |

---

## 🧠 Матрица решений

Механизм принятия решений сканера объединяет классификацию версий (из API stable-check на WordPress.org) с поведенческими данными и выдаёт 10 различных вердиктов:

| Вердикт | Условия |
|---|---|
| **`confirmed_vulnerable`** 🔴 | Версия небезопасна И метка пробного запроса сохранилась как элемент `<area>` И присутствует гаджет `user-profile.js` |
| **`vulnerable`** 🔴 | Версия небезопасна по данным wordpress.org; поведенческий пробный запрос НЕ выполнялся (повторите с `--active`) |
| **`likely_vulnerable`** 🟠 | Метка пробного запроса сохранилась, НО `user-profile.js` не подключён (отсутствует опубликованный гаджет автозапуска) |
| **`mitigated`** 🟣 | Версия небезопасна, НО метка пробного запроса была закодирована/удалена/не отражена (тихий бэкпорт или усиление защиты) |
| **`likely_patched`** 🟢 | Версия скрыта/неизвестна, НО метка пробного запроса была закодирована/удалена |
| **`patched`** 🟢 | Версия `latest` или `outdated` (с бэкпортами безопасности) |
| **`not_wordpress`** ⚫ | Отпечаток WordPress не обнаружен |
| **`unreachable`** ⚫ | Соединение не удалось (тайм-аут, SSL, DNS) |
| **`inconclusive`** 🟡 | Блокировка WAF, вызов Cloudflare, скрытая версия без пробного запроса или отсутствие страницы входа |
| **`error`** 🟡 | Непредвиденный сбой во время сканирования |

### Формат вывода

**Колонки CSV:** `host`, `url`, `status`, `checker_status`, `wp_version`, `branch_status`, `evidence`, `http`, `ms`, `error`

Колонка `checker_status` соответствует **словарю публичного чекера pwn.ai** (`vulnerable` / `patched` / `not_wordpress` / `unreachable` / `inconclusive` / `error`) для прямой корреляции.

---

## 🔍 Сигнатуры обнаружения (Blue Team / SOC)

Если вы на стороне защиты, вот криминалистические следы, которые оставляет эта уязвимость:

### На стороне сервера (логи веб-сервера / WAF)

```
# Primary signal: encoded '<' in the log parameter
POST /wp-login.php  →  log=%3C...  (URL-encoded < in username field)

# Higher confidence: paired with REST pivoting
GET /?rest_route=/&_method=GET&_jsonp=...     # JSONP callback
GET /wp-json/wp/v2/statuses/publish?_jsonp=...  # WAF-bypass variant

# Escalation stage indicators
GET /wp-admin/authorize-application.php?success_url=<off-origin>
POST /wp-admin/update.php?action=upload-plugin
GET /wp-content/plugins/<random>/shell.php
```

### Правило блокировки на Edge / WAF

Блокируйте `POST /wp-login.php`, в котором параметр `log` содержит `%3C` (URL-кодированный символ `<`). Допустимые имена пользователей WordPress **никогда** не содержат угловых скобок. Не **сужайте** правило до конкретных тегов — KSES допускает табуляцию, перевод строки и возврат каретки после `<` и любой тег из белого списка, поэтому правило, привязанное к конкретному тегу, тривиально обходится. [citation:hadrian.io blog]

### Ключевой вывод для защитников

Колбэк `_jsonp=` на этапе повышения привилегий использует **точки** для обхода свойств (например, `window.opener.approve.click`). Помечайте REST-запросы с точечными JSONP-колбэками как сильные индикаторы эксплуатации. [citation:hadrian.io blog]

---

## ⚖️ Правовое и этичное использование

```
THIS TOOL IS DETECTION-ONLY. IT DOES NOT:
  ✗ Weaponize the JSONP callback beyond the public alert()
  ✗ Include admin-lure pages or Application Password capture
  ✗ Include REST abuse, plugin upload, or PHP shell code
  ✗ Execute more than one failed login per target per scan

YOU MUST:
  ✓ Only scan assets you own or have written authorization to test
  ✓ Only generate PoCs for your own browser on your own server
  ✓ Never send PoC links to site admins/users
  ✓ Never escalate past alert() without program written approval
  ✓ Follow the bug bounty program scope and rules

This toolkit exists for authorized security research, bug bounty
programs, and defensive detection engineering. Misuse is your
responsibility.
```

---

## 📁 Структура репозитория

```
xss2shell/
├── README.md                  ← You are here
├── xss2shell_mass.py          ← Behavior-first mass scanner (v1.1.0)
├── make_poc.py                ← Evidence-grade PoC page generator
├── requirements.txt           ← Python dependencies (just `requests`)
├── .gitignore                 ← Ignores scan outputs and cache
└── example/
    ├── domains.txt            ← Example input file
    └── example_output.csv     ← Example scan output
```

---

## ❓ FAQ

**В: Почему бы просто не проверить строку версии WordPress?**  
О: Управляемые хостинги (WP Engine, Kinsta, Pantheon и т.п.) часто переносят патчи безопасности без изменения версии. Плагины усиления защиты входа полностью заменяют сообщение об ошибке. Оба случая приводят к **ложным срабатываниям** у сканеров, работающих только по версиям, и **ложным отрицательным результатам** для скрытых версий. Этот сканер проверяет *фактическое поведение санитайзера*.

**В: Опасен ли пробный запрос `--active`?**  
О: Нет. Он отправляет ровно одну неудачную попытку входа с безвредным именем пользователя-меткой. Он не пытается выполнить JavaScript, не перебирает допустимые имена пользователей и не запускает никакую реальную эксплуатацию. Он менее интрузивен, чем обычная попытка входа.

**В: Можно ли использовать этот инструмент для несанкционированного сканирования?**  
О: Нет. Активный пробный запрос отправляет HTTP POST на `/wp-login.php` — это запрос к целевому серверу. Используйте только на активах, которые вам принадлежат или на тестирование которых у вас есть явное письменное разрешение.

**В: В чём разница между `vulnerable` и `confirmed_vulnerable`?**  
О: `vulnerable` означает, что API WordPress.org считает версию небезопасной, но мы не подтвердили поведенчески расхождение strip_tags/KSES. `confirmed_vulnerable` означает, что мы отправили пробный запрос, и элемент `<area>` пережил оба санитайзера — **опубликованная цепочка может сработать**.

**В: Можно ли использовать это в отчётах для моей программы bug bounty?**  
О: Да! Колонка `checker_status` напрямую соответствует словарю публичного чекера pwn.ai для лёгкой корреляции. Дополняйте результаты сканирования видеодоказательствами PoC из `make_poc.py`, чтобы отчёты были полными.

**В: Обнаруживает ли этот инструментарий цепочку RCE?**  
О: Нет. Этот инструментарий обнаруживает **точку входа XSS без аутентификации**. Полная цепочка RCE требует вошедшего администратора, включённых паролей приложений и прав на загрузку плагинов — условий, которые этот сканер не оценивает. Сканер сосредоточен на том, что наблюдаемо извне: обходе санитайзера.

---

## 🏆 Благодарности и ссылки

- **Обнаружение и раскрытие:** [pwn.ai](https://pwn.ai) — обнаружена автономно мультиагентной ИИ-системой
- **Основа техники SOME:** [Paulos Yibelo](https://x.com/@paulosyibelo) — исследование 2022 года, номинированное на Top Web Hacking Techniques
- **Технический анализ:** [Hadrian](https://hadrian.io) — всесторонние рекомендации по обнаружению и смягчению последствий
- **CVE:** CVE-2026-64638 / GHSA-52p2-r8wf-jcrf
- **Патч:** [WordPress 7.0.3](https://wordpress.org/news/2026/08/wordpress-7-0-3-release/)

---

<p align="center">
  <sub>Создано <a href="https://github.com/0xlipon">0xlipon</a> • Только обнаружение • Только для авторизованного использования</sub>
</p>
Скачать инструмент