找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1167

积分

0

好友

167

主题
发表于 前天 18:57 | 查看: 12| 回复: 0

近期,Next.js框架与React生态中的一个高危远程代码执行(RCE)漏洞引起了广泛关注。本文将对该漏洞(CVE-2025-55182)进行完整的复现与分析,探讨其攻击原理、利用方式,并提供相应的安全审计与防护建议。

一、工具准备

公开的漏洞利用工具(POC)可通过以下地址获取,包含源码及编译版本:
https://github.com/darkfiv/ReactExploitGUI

二、受影响资产指纹识别

在资产测绘或漏洞扫描中,可使用以下特征进行批量识别:

app="Next.js" && body="/_next/static/chunks/app/"

其中,body="/_next/static/chunks/app/" 是识别“Next.js App Router”最简洁可靠的页面级指纹,该指纹与本次CVE的利用链高度相关。

三、漏洞环境搭建

在Kali Linux等测试环境中,可以快速搭建存在漏洞的Next.js应用进行验证。

  1. 创建漏洞应用:使用存在漏洞的特定版本创建Next.js项目(此处以16.0.5为例)。
    npm create next-app@16.0.5 react -y
  2. 启动开发服务器:进入项目目录并启动服务。
    cd react
    npm run dev
  3. 服务正常启动后,访问 http://localhost:3000 应能看到Next.js默认页面。

Next.js应用启动成功

四、漏洞利用与行为分析

1. 工具检测与初步利用

使用POC工具对目标进行检测与利用。

POC工具界面
漏洞检测结果
命令执行测试

2. 服务端环境分析

通过分析HTTP响应头与系统进程,确认服务运行环境。

curl -I http://192.168.137.129:3000/

响应头中包含 X-Powered-By: Next.js,表明后端为Node.js。

Next.js响应头

进一步查看端口占用进程:

ss -tlnp | grep :3000
# 假设得到PID=11644
readlink -f /proc/11644/exe

确认进程为 /usr/bin/node,即应用运行在Node.js 运行时上。

进程查询结果
Node进程确认

3. 执行命令与日志取证

访问工具生成的命令执行路径:

http://192.168.137.129:3000/dmzaxx7k67k1diag?cmd=whoami

命令执行回显

在系统日志中搜索攻击痕迹:

grep -R "dmzaxx7k67k1diag" /var/log/* 2>/dev/null

可在Suricata等安全监控日志中发现对应的HTTP请求记录。

Suricata日志记录

4. 反弹Shell与网络连接取证

通过POC工具发起反弹Shell连接。

反弹Shell建立

在监控日志中查找对应的出站连接:

grep -nE '"src_ip":"192\.168\.137\.129".*"dest_ip":"192\.168\.1\.11".*"dest_port":4444' /var/log/suricata/eve.json
ss -tnp | grep '192.168.1.11:4444'
grep -R "192\.168\.1\.11.*4444" /var/log/* 2>/dev/null

反连日志搜索
网络连接状态

5. 内存马机制分析

根据POC源码分析,攻击主要注入两种内存马:

  • 简单命令执行型:路径为 /exec,内部调用 child_process.exec
  • 哥斯拉型Webshell:路径为 /api/v1/n0rth,使用RC4加密通信。
6. 攻击载荷注入要点
  • 通过篡改 _response._prefix 注入恶意JavaScript。
  • 载荷由multipart/form-data表单承载,特定字段使用UTF-16LE与Base64编码。
  • 请求需包含 Next-ActionX-Nextjs-Request-Id等特定头部。
  • 注入成功的特征通常为3xx重定向响应。
7. 攻击痕迹与取证特征
  • 路由痕迹:出现对 /exec?cmd=... (GET) 和 /api/v1/n0rth (POST) 的访问。
  • 进程行为:Node进程会派生子进程(如sh、bash)执行命令。
  • 静态签名http.Server.prototype.emit被重写,内存中存在常量路径和RC4密钥3c6e0b8a9c15224a
  • 网络日志:频繁出现包含cmd=参数的请求和Base64编码的POST数据包。
8. 漏洞影响范围澄清:React vs Next.js
  • React:作为前端UI库,本身不直接处理HTTP请求或服务端逻辑。纯客户端React应用不受此漏洞影响。
  • Next.js:作为基于React的全栈框架,其服务端请求处理链(尤其是Server Actions相关解析)存在缺陷,导致可在Node.js服务进程中执行任意代码,影响重大。

五、安全加固与系统审计

为了有效检测和防御此类攻击,需要对系统进行深度审计。

(一)部署进程执行审计

安装并配置auditd,监控所有execve系统调用。

apt-get install auditd -y
systemctl enable --now auditd
auditctl -a always,exit -F arch=b64 -S execve -F key=exec
auditctl -a always,exit -F arch=b32 -S execve -F key=exec

审计报告生成:

ausearch -k exec | aureport -x --summary
(二)攻击行为取证分析
  1. 定位应用进程PID
    ss -ltnp | grep :3000
  2. 检索可疑命令执行:查看近2小时内的执行记录,并筛选高风险命令。
    ausearch -k exec -ts -2h -i
    ausearch -k exec -ts -2h -i | grep -E 'type=EXECVE|/bin/(bash|sh|nc)|/usr/bin/(python|perl)' -A3
  3. 按父进程溯源:将<PPID>替换为Node应用进程的PID。
    ausearch -k exec -ts -2h -i | grep "ppid=<PPID>" -A3
  4. 检查网络外连证据:监控到C2服务器的连接。
    ausearch -ts -2h -sc connect -i | grep -E '192\.168\.1\.11|4444'
(三)优化审计规则(持久化)

将更精确的规则写入配置文件,重启后生效,便于长期的运维安全监控。

# 示例规则:监控非root用户的执行和网络连接
auditctl -a always,exit -F arch=b64 -S execve -F euid>=1000 -F auid!=4294967295 -k exec
auditctl -a always,exit -F arch=b64 -S connect -F a0=2  -F euid>=1000 -k netconn

规则需写入/etc/audit/rules.d/目录下的文件,并使用augenrules --load加载。

六、漏洞总结与防护建议

1. 核心危害
  • 未授权RCE:通过/exec路径直接执行任意系统命令。
  • 内存驻留:通过重写Node.js HTTP模块函数实现无文件驻留,难以静态检测。
  • 自动化攻击:返回结构化JSON结果,易于与其他攻击脚本联动。
2. 安全影响层面
  • 机密性:泄露服务器敏感文件、环境变量、数据库凭证。
  • 完整性:篡改应用数据、植入持久化后门。
  • 可用性:执行破坏性命令导致服务中断。
  • 横向移动:以内网跳板机身份进行横向渗透。
3. 处置与加固建议
  • 应急响应:立即重启受影响服务,清除内存马。
  • 访问控制:在反向代理或WAF层阻断/exec/api/v1/n0rth路径及cmd=参数。
  • 最小权限:以低权限账户运行Node.js应用服务。
  • 输入校验:对用户输入进行严格过滤,避免直接将输入传递给命令执行函数。
  • 版本升级:及时更新Next.js框架至已修复的安全版本。
  • 持续监控:部署完善的日志审计与进程监控体系,对异常行为进行告警。



上一篇:Transformer论文发布与技术复盘:谷歌布林谈AI发展格局与未来方向
下一篇:Embedding模型微调实战:基于LlamaIndex与BGE提升RAG检索效果
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 16:02 , Processed in 0.117145 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表