PHP代码审计-Ourphp任意文件上传漏洞(CNVD-2021-18284)
字数 1102 2025-08-24 20:49:22

Ourphp任意文件上传漏洞(CNVD-2021-18284)分析及利用教学

漏洞概述

Ourphp是一款专业的建站系统,最新版本V3.0.0存在任意文件上传漏洞,攻击者可通过上传.user.ini文件配合图片马实现服务器控制(getshell)。

受影响版本

Ourphp V3.0.0

漏洞位置

/client/manage/ourphp_filebox.php文件

漏洞原理分析

1. 漏洞入口

漏洞存在于文件编辑功能中,通过以下路由触发:

/client/manage/ourphp_filebox.php?path=edit&ok

2. 关键参数

  • code:待写入文件的内容
  • md:目标文件路径(模板文件路径)

3. 安全校验机制

代码中存在安全码校验(212-216行),但对漏洞利用无实质性影响。

4. 过滤机制缺陷

在226行处存在文件后缀过滤机制:

  • 采用黑名单方式过滤phpjspasp等危险后缀
  • 但未过滤.user.ini文件

5. 文件写入机制

231行处使用fopen()fwrite()函数实现文件写入,由于过滤不严导致可上传.user.ini文件。

漏洞利用步骤

1. 寻找图片马上传点

在后台找到可上传图片马并返回路径的功能点:

  • 推荐使用"上传缩略图"功能
  • 记录图片马上传后的存储路径

2. 构造.user.ini文件

.user.ini文件内容示例:

auto_prepend_file = /path/to/your/image_malware.jpg

3. 上传.user.ini文件

通过漏洞点上传构造好的.user.ini文件:

  1. 访问/client/manage/ourphp_filebox.php?path=edit&ok
  2. POST提交以下参数:
    • code.user.ini文件内容
    • md:目标路径(如网站根目录)

4. 触发漏洞

  • 上传成功后,所有PHP文件执行时都会自动包含指定的图片马
  • 刷新任意页面即可验证是否成功包含

漏洞利用优势

  1. .user.ini文件可被被动加载,无需直接访问
  2. 影响范围广(影响目录下所有PHP文件)
  3. 可作为持久化后门使用

防御建议

  1. 更新到最新版本
  2. 完善文件上传过滤机制:
    • 采用白名单方式
    • 增加对.user.ini等特殊文件的过滤
  3. 限制文件写入权限
  4. 定期检查服务器上的.user.ini文件

技术要点总结

  1. .user.ini文件特性:

    • 类似于用户自定义的php.ini
    • 支持auto_prepend_file指令
    • 可被PHP自动加载
  2. 组合利用方式:

    • 先上传图片马获取路径
    • 再上传.user.ini文件包含图片马
    • 实现任意代码执行
  3. 漏洞利用关键:

    • 找到可回显路径的图片马上传点
    • 确保.user.ini上传到有效目录
    • 理解PHP配置文件的加载机制
Ourphp任意文件上传漏洞(CNVD-2021-18284)分析及利用教学 漏洞概述 Ourphp是一款专业的建站系统,最新版本V3.0.0存在任意文件上传漏洞,攻击者可通过上传 .user.ini 文件配合图片马实现服务器控制(getshell)。 受影响版本 Ourphp V3.0.0 漏洞位置 /client/manage/ourphp_filebox.php 文件 漏洞原理分析 1. 漏洞入口 漏洞存在于文件编辑功能中,通过以下路由触发: 2. 关键参数 code :待写入文件的内容 md :目标文件路径(模板文件路径) 3. 安全校验机制 代码中存在安全码校验(212-216行),但对漏洞利用无实质性影响。 4. 过滤机制缺陷 在226行处存在文件后缀过滤机制: 采用黑名单方式过滤 php 、 jsp 、 asp 等危险后缀 但未过滤 .user.ini 文件 5. 文件写入机制 231行处使用 fopen() 和 fwrite() 函数实现文件写入,由于过滤不严导致可上传 .user.ini 文件。 漏洞利用步骤 1. 寻找图片马上传点 在后台找到可上传图片马并返回路径的功能点: 推荐使用"上传缩略图"功能 记录图片马上传后的存储路径 2. 构造.user.ini文件 .user.ini 文件内容示例: 3. 上传.user.ini文件 通过漏洞点上传构造好的 .user.ini 文件: 访问 /client/manage/ourphp_filebox.php?path=edit&ok POST提交以下参数: code : .user.ini 文件内容 md :目标路径(如网站根目录) 4. 触发漏洞 上传成功后,所有PHP文件执行时都会自动包含指定的图片马 刷新任意页面即可验证是否成功包含 漏洞利用优势 .user.ini 文件可被被动加载,无需直接访问 影响范围广(影响目录下所有PHP文件) 可作为持久化后门使用 防御建议 更新到最新版本 完善文件上传过滤机制: 采用白名单方式 增加对 .user.ini 等特殊文件的过滤 限制文件写入权限 定期检查服务器上的 .user.ini 文件 技术要点总结 .user.ini 文件特性: 类似于用户自定义的 php.ini 支持 auto_prepend_file 指令 可被PHP自动加载 组合利用方式: 先上传图片马获取路径 再上传 .user.ini 文件包含图片马 实现任意代码执行 漏洞利用关键: 找到可回显路径的图片马上传点 确保 .user.ini 上传到有效目录 理解PHP配置文件的加载机制