国外某cms审计之文件删除漏洞
字数 997 2025-08-26 22:11:45
MyBB CMS 文件删除漏洞分析与利用教学文档
漏洞概述
本漏洞存在于MyBB内容管理系统的附件管理模块中,允许攻击者在特定条件下删除服务器上的任意文件(除install.lock外)。漏洞源于对用户输入验证不充分,结合上传路径配置修改功能,可实现目录穿越和文件删除。
漏洞位置
\admin\modules\forum\attachements.php 文件第242行的unlink函数调用处:
if(!@unlink(MYBB_ROOT.$mybb->settings['uploadspath']."/".$file))
漏洞分析
文件删除流程
-
输入来源:
- 通过POST请求接收
orphaned_files数组参数 - 在228行:
$file = $mybb->get_input('orphaned_files', MyBB::INPUT_ARRAY);
- 通过POST请求接收
-
过滤机制:
- 232行:使用
str_replace过滤..字符,防止目录穿越 - 234行:使用
realpath函数验证目录有效性 - 236行:使用
strpos检查路径是否包含网站根目录,防止操作网站外文件 - 特殊处理:对
install.lock文件有专门保护
- 232行:使用
-
访问路径:
http://localhost/mybb/admin/index.php?module=forum-attachments&action=delete_orphan
上传路径配置控制
-
配置修改位置:
\mybb\inc\settings.php文件1101行:$db->update_query("settings", array('value' => $mybb->get_input($value)), "name='{$name}'");uploadspath变量在1042行定义,通过POST请求的upsetting数组传入
-
配置修改接口:
http://localhost/mybb/admin/index.php?module=config-settings&action=change
漏洞利用步骤
准备工作
- 发表帖子并上传一个测试附件(如1111.txt)
- 修改
uploadspath配置值为目标删除文件的目录
利用过程
-
访问论坛附件管理界面:
http://localhost/mybb/admin/index.php?module=forum-attachments -
进行正常附件删除操作并抓包
-
修改数据包:
- 修改
action参数为delete_orphans - 添加POST参数:
orphaned_files[]=///config.php - 完整示例:
action=delete_orphans&orphaned_files[]=///config1.php
- 修改
-
发送修改后的请求
防护措施
-
输入验证:
- 严格限制文件路径,使用白名单机制
- 对文件名进行更严格的过滤
-
权限控制:
- 限制配置修改权限
- 对文件删除操作进行二次确认
-
文件保护:
- 对系统关键文件设置不可删除属性
- 实施操作日志记录
总结
该漏洞展示了如何通过组合配置修改和文件删除功能实现任意文件删除。虽然系统已实施了一些防护措施(如目录穿越防护、根目录检查等),但仍存在绕过可能。特别值得注意的是系统对install.lock文件的特殊保护,这种白名单机制值得在其他关键文件保护中借鉴。