一次wuzhicms审计
字数 1528 2025-08-25 22:59:10
WuzhiCMS 安全审计报告与漏洞分析
1. 敏感信息泄露漏洞
漏洞描述:
WuzhiCMS 存在敏感信息泄露问题,攻击者可以直接通过后台特定链接获取敏感信息。
技术细节:
- 后台存在可直接访问的链接暴露敏感信息
- 代码中未对敏感信息进行适当保护
修复建议:
- 对后台敏感信息访问进行权限控制
- 移除或保护包含敏感信息的接口
2. SQL 注入漏洞
2.1 sms_check.php SQL注入
漏洞位置:
www/api/sms_check.php
漏洞细节:
$code = $param; // 直接使用用户输入
$sql = "SELECT * FROM sms_check WHERE code='$code'"; // 直接拼接SQL语句
利用方式:
- 通过
param参数传入恶意SQL代码 - 可导致数据库信息泄露、数据篡改等
2.2 promote模块SQL注入
漏洞位置:
coreframe/app/promote/admin/index.php
漏洞细节:
$keywords = $keywords; // 直接使用用户输入
$sql = "SELECT * FROM table WHERE keywords LIKE '%$keywords%'"; // 直接拼接SQL语句
修复建议:
- 使用预处理语句(PDO/mysqli prepared statements)
- 对用户输入进行严格过滤和转义
3. 任意文件读取与删除漏洞
漏洞位置:
coreframe/app/attachment/admin/index.php
3.1 文件读取漏洞
漏洞细节:
function dir() {
$path = str_replace(array('../','./','.\','..\'), '', $path);
$path .= '/'; // 可通过多写绕过路径限制
// 读取文件内容
}
绕过方式:
- 使用
....//或....\/等多层路径绕过过滤
3.2 文件删除漏洞
漏洞细节:
function del() {
$file = $_GET['file'];
$file = str_replace(ATTACHMENT_URL, '', $file);
my_unlink($file); // 无其他过滤直接删除
}
利用方式:
- 通过构造特定URL删除服务器上任意文件
- 可导致系统瘫痪或数据丢失
修复建议:
- 实现严格的路径检查和权限验证
- 限制可删除的文件范围
4. 逻辑漏洞(UC接口滥用)
漏洞位置:
www/api/uc.php
漏洞细节:
// 可调用uc_note类的任意方法
$action = $_GET['action'];
$uc_note = new uc_note();
$uc_note->$action(); // 无限制的方法调用
潜在危害:
- 可更改用户名和密码
- 可执行其他敏感操作
修复建议:
- 限制可调用的方法范围
- 增加权限验证
5. 远程代码执行(RCE)漏洞
漏洞位置:
coreframe/app/core/libs/function/common.func.php中的set_cache方法
漏洞细节:
function set_cache($name, $data, $path = '') {
file_put_contents($path.$name.'.php', $data); // 无过滤写入PHP文件
}
调用链:
- 多个模型(如member模型)调用此方法
- 通过控制写入内容可实现代码执行
利用方式:
- 找到调用
set_cache的功能点 - 控制写入内容为恶意PHP代码
- 访问生成的缓存文件执行代码
修复建议:
- 对写入内容进行过滤
- 限制缓存文件的执行权限
- 使用序列化而非直接PHP代码存储
6. 其他安全问题
6.1 功能点时间限制注入
- 第一个SQL注入需要功能点启动五分钟内才能利用
- 增加了攻击难度但仍存在风险
6.2 多处RCE潜在点
- 全局搜索发现多处类似
set_cache的调用 - 存在多个可能的利用路径
防御建议总结
-
输入验证:
- 对所有用户输入进行严格过滤
- 使用白名单而非黑名单机制
-
输出编码:
- 对输出到SQL、HTML等的内容进行编码
-
权限控制:
- 实现最小权限原则
- 后台功能严格验证用户权限
-
安全编码:
- 使用预处理语句防止SQL注入
- 避免直接拼接用户输入到敏感操作
-
日志监控:
- 记录所有敏感操作
- 监控异常行为
-
框架更新:
- 虽然已停更,建议迁移到维护中的CMS
- 如必须使用,应自行修复已知漏洞
审计方法论
-
功能点分析:
- 先在后台寻找功能点
- 再到代码中审计对应实现
-
敏感函数追踪:
- 全局搜索
file_put_contents等危险函数 - 分析调用链和参数控制
- 全局搜索
-
数据流分析:
- 跟踪用户输入从入口到敏感操作的全过程
- 检查每个环节的过滤情况
-
权限验证检查:
- 验证每个敏感操作是否有适当的权限控制
-
边界条件测试:
- 测试过滤规则的绕过可能性
- 尝试非常规输入触发异常行为
通过系统性的审计方法,可以在WuzhiCMS中发现更多潜在的安全问题。建议开发者参考此报告修复漏洞,或考虑迁移到更安全的CMS平台。