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行处存在文件后缀过滤机制:
- 采用黑名单方式过滤
php、jsp、asp等危险后缀 - 但未过滤
.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文件:
- 访问
/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配置文件的加载机制