
Nmap NSE-скрипт для сканирования React2Shell (CVE-2025-55182)
Nmap NSE-скрипт для сканирования React2Shell (CVE-2025-55182)
Дисклеймер Приведённый ниже код предоставлен исключительно в образовательных и исследовательских целях. Любое использование данного скрипта осуществляется исключительно на усмотрение и под ответственность пользователя.
Этот сканер может выдавать ложные срабатывания или неубедительные результаты, поэтому обязанность пользователя — проверять и подтверждать все полученные находки. Автор не несёт ответственности за неправомерное использование, ущерб или непредвиденные последствия, возникшие в результате выполнения этого кода.
Используйте этот инструмент только в средах, где у вас есть явное разрешение. Несанкционированное тестирование систем строго запрещено и может быть незаконным.
Автор: Kevin Leon
Категории: discovery, vuln, intrusive
Тип скрипта: Nmap NSE
nmap --script http-vuln-cve2025-55182.nse -p- <target>
nmap --script http-vuln-cve2025-55182.nse -p3000,3001,3002 <target>
nmap --script http-vuln-cve2025-55182.nse \
--script-args=http-vuln-cve2025-55182.waf_bypass=true <target>
PORT STATE SERVICE
3000/tcp open ppp
| http-vuln-cve2025-55182:
| VULNERABLE:
| React2Shell Remote Code Execution (RCE)
| State: VULNERABLE
| IDs: CVE:2025-55182
| Risk factor: High CVSS: 10.0
| Disclosure date: 2025-12-03
| References:
| https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
| https://nvd.nist.gov/vuln/detail/CVE-2025-55182
| https://github.com/assetnote/react2shell-scanner
|_ https://github.com/msanft/CVE-2025-55182
Перед попыткой эксплуатации скрипт проверяет, что цель, вероятно, использует:
Методы обнаружения
Скрипт выполняет начальный запрос:
http.get(host, port, "/")
и проверяет:
X-Powered-By: next.jsX-Powered-By: react_next
(признак статических ресурсов Next.js)То цель считается потенциально уязвимой.
Генерация multipart-границы
Скрипт генерирует рандомизированную границу в формате WebKit:
----WebKitFormBoundary<random 16 chars>
Она используется для эксплуатации через multipart/form-data.
В зависимости от аргументов пользователя:
Простая эксплуатирующая нагрузка
Нагрузка для обхода WAF
--script-args=http-vuln-cve2025-55182.waf_bypass=true
Включает больше полей и обфускацию для обхода промежуточного ПО.
Внутри нагрузки скрипт внедряет:
process.mainModule.require('child_process')
.execSync('echo $((41*271))')
Эта команда вычисляется в 11111 и позже используется для проверки эксплуатации через определение redirect-дигеста.
Скрипт пытается эксплуатировать уязвимость, отправляя сформированную нагрузку методом POST на несколько известных RSC-эндпоинтов:
/
/_action
/api/action
/api
/_next/data
/__rsc
/action
/server
/server/action
Каждый запрос отправляется как:
http.post(host, port, path, header, payload)
Случай A — HTTP 500 Server Error
Успешный сбой десериализации указывает на возможную уязвимость:
Случай B — наличие NEXT_REDIRECT-дигеста
Нагрузка принудительно вызывает серверный редирект:
NEXT_REDIRECT;push;/login?a=11111;307;
Скрипт проверяет заголовки ответа на:
11111Если найдено → Весьма вероятно уязвим
В зависимости от результата обнаружения скрипт формирует стандартный NSE-отчёт об уязвимости:
VULNERABLE_VULN ┌──────────────────────┐
│ Start NSE Script │
└─────────────┬────────┘
│
▼
┌────────────────────┐
│ Request "/" │
│ Check headers/body │
└──────────┬─────────┘
│Yes
▼
┌────────────────────┐
│ React/Next.js Detected? ── No ─▶ Exit (Not Vulnerable)
└──────────┬─────────┘
│Yes
▼
┌────────────────────┐
│ Build multipart │
│ exploit payload │
└──────────┬─────────┘
▼
┌─────────────────────────────────┐
│ Loop through RSC endpoints │
│ Send POST exploit payload │
└──────────┬──────────────────────┘
│
┌─────────┴──────────────────────────────┐
▼ ▼
┌───────────────┐ ┌───────────────────┐
│ HTTP 500? │ YES │ Redirect digest? │ YES
└───────┬────────┘ └────────┬──────────┘
│NO │NO
▼ ▼
Continue testing Continue testing
│ │
└──────────────────────────────┬─────────┘
▼
┌────────────────────┐
│ Vulnerable? │
└──────────┬─────────┘
▼
Generate Report
Этот скрипт обеспечивает тщательное, автоматизированное и безопасное обнаружение критической уязвимости React2Shell. Его многоуровневый подход к валидации гарантирует надёжное обнаружение при минимизации ложных срабатываний.