
React2Shell (CVE-2025-55182) 스캔을 위한 Nmap NSE 스크립트
React2Shell(CVE-2025-55182) 스캔을 위한 Nmap NSE 스크립트
면책 조항 다음 코드는 교육 및 연구 목적으로만 제공됩니다. 이 스크립트의 사용은 전적으로 사용자의 판단과 책임 하에 이루어집니다.
이 스캐너는 오탐(false positive) 또는 불확실한 결과를 생성할 수 있으므로, 사용자는 보고된 결과를 검증하고 확인해야 합니다. 작성자는 이 코드 실행으로 인한 오용, 손해 또는 의도하지 않은 결과에 대해 어떠한 책임도 지지 않습니다.
이 도구는 명시적 허가를 받은 환경에서만 사용하십시오. 승인되지 않은 시스템 테스트는 엄격히 금지되며 불법일 수 있습니다.
작성자: 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 취약점에 대한 철저하고 자동화된 안전한 탐지 메커니즘을 제공합니다. 계층화된 검증 접근 방식은 오탐(false positive)을 최소화하면서 신뢰할 수 있는 탐지를 보장합니다.