
React2Shell (CVE-2025-55182) をスキャンするための Nmap NSE スクリプト
React2Shell (CVE-2025-55182) をスキャンするための Nmap NSE スクリプト
免責事項 以下のコードは教育・研究目的のみで提供されています。 このスクリプトの使用はすべてユーザーの判断と責任において行われるものとします。
このスキャナーは誤検出や不確定な結果を生じる可能性があるため、報告された結果の検証と確認はユーザーの責任です。作者は、このコードの実行に起因する誤用、損害、または意図しない結果について一切の責任を負いません。
このツールは、明示的な許可がある環境でのみ使用してください。無許可でのシステムテストは固く禁止されており、違法となる可能性があります。
作者: 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 の静的アセットを示す)その後、ターゲットは潜在的に脆弱であると見なされます。
マルチパートバウンダリの生成
スクリプトはランダム化された 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 と評価され、後でリダイレクトダイジェスト検出による悪用の検証に使用されます。
スクリプトは、構築されたペイロードを既知のいくつかの RSC エンドポイントに POST して脆弱性の悪用を試みます:
/
/_action
/api/action
/api
/_next/data
/__rsc
/action
/server
/server/action
各リクエストは次のように送信されます:
http.post(host, port, path, header, payload)
ケース A — HTTP 500 サーバーエラー
デシリアライゼーションの失敗が成功した場合、脆弱性の可能性を示します:
ケース 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 脆弱性に対して、徹底的で自動化された安全な検出メカニズムを提供します。多層的な検証アプローチにより、誤検出を最小限に抑えながら信頼性の高い検出を実現します。