Lmxcms后台任意文件删除代码审计思路
字数 889 2025-08-12 11:34:14
Lmxcms后台任意文件删除漏洞分析与复现
漏洞概述
Lmxcms内容管理系统存在一个后台任意文件删除漏洞,攻击者可以通过构造特定的请求删除服务器上的任意文件。该漏洞源于对删除文件操作缺乏充分的权限验证和路径限制。
漏洞分析
漏洞位置
漏洞存在于后台数据库备份管理模块中,具体涉及以下关键点:
- 使用
unlink()函数进行文件删除操作 - 删除操作通过
delOne函数实现 - 删除功能以GET方式接收参数
代码审计流程
-
定位关键函数:
- 全局搜索
unlink()函数,这是PHP中用于删除文件的函数 - 追踪
delOne函数的调用链
- 全局搜索
-
参数传递分析:
- 发现删除操作通过GET方式接收
filename参数 - 删除的文件路径被构造为
file/back/目录下
- 发现删除操作通过GET方式接收
-
路径限制分析:
- 系统仅检查文件是否存在于
file/back/目录下 - 未对路径进行规范化处理或防止目录遍历攻击
- 系统仅检查文件是否存在于
漏洞利用条件
- 拥有后台管理员权限(或通过其他漏洞获取权限)
- 知道或能猜测目标文件的路径
- 目标文件对Web服务器进程可写
漏洞复现
复现环境
- Lmxcms X.XX版本
- PHP环境
- 管理员后台访问权限
复现步骤
- 登录Lmxcms后台
- 构造以下请求:
http://127.0.0.1:8081/lmxcmsX.XX/admin.php?m=backdb&a=delbackdb&filename=1.txt - 观察
file/back/目录下的1.txt文件是否被删除
高级利用
通过目录遍历技术可以删除其他目录下的文件:
http://127.0.0.1:8081/lmxcmsX.XX/admin.php?m=backdb&a=delbackdb&filename=../../config/database.php
修复建议
-
输入验证:
- 对
filename参数进行严格过滤 - 禁止路径中包含
../等目录遍历字符
- 对
-
权限控制:
- 增加CSRF防护
- 对删除操作进行二次确认
-
路径限制:
- 将文件路径限制在特定目录内
- 使用
realpath()函数解析绝对路径并检查是否在允许范围内
-
日志记录:
- 记录所有文件删除操作
- 包括操作者、时间、删除的文件路径等信息
防御措施
- 升级到最新版本的Lmxcms
- 限制后台管理页面的访问IP
- 对重要文件设置只读权限
- 定期备份网站文件和数据库
总结
该漏洞展示了后台功能中文件操作的危险性,即使需要管理员权限,也应实施严格的安全措施。开发人员在实现文件操作功能时应始终考虑最小权限原则和输入验证的重要性。