一次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模型)调用此方法
  • 通过控制写入内容可实现代码执行

利用方式

  1. 找到调用set_cache的功能点
  2. 控制写入内容为恶意PHP代码
  3. 访问生成的缓存文件执行代码

修复建议

  • 对写入内容进行过滤
  • 限制缓存文件的执行权限
  • 使用序列化而非直接PHP代码存储

6. 其他安全问题

6.1 功能点时间限制注入

  • 第一个SQL注入需要功能点启动五分钟内才能利用
  • 增加了攻击难度但仍存在风险

6.2 多处RCE潜在点

  • 全局搜索发现多处类似set_cache的调用
  • 存在多个可能的利用路径

防御建议总结

  1. 输入验证

    • 对所有用户输入进行严格过滤
    • 使用白名单而非黑名单机制
  2. 输出编码

    • 对输出到SQL、HTML等的内容进行编码
  3. 权限控制

    • 实现最小权限原则
    • 后台功能严格验证用户权限
  4. 安全编码

    • 使用预处理语句防止SQL注入
    • 避免直接拼接用户输入到敏感操作
  5. 日志监控

    • 记录所有敏感操作
    • 监控异常行为
  6. 框架更新

    • 虽然已停更,建议迁移到维护中的CMS
    • 如必须使用,应自行修复已知漏洞

审计方法论

  1. 功能点分析

    • 先在后台寻找功能点
    • 再到代码中审计对应实现
  2. 敏感函数追踪

    • 全局搜索file_put_contents等危险函数
    • 分析调用链和参数控制
  3. 数据流分析

    • 跟踪用户输入从入口到敏感操作的全过程
    • 检查每个环节的过滤情况
  4. 权限验证检查

    • 验证每个敏感操作是否有适当的权限控制
  5. 边界条件测试

    • 测试过滤规则的绕过可能性
    • 尝试非常规输入触发异常行为

通过系统性的审计方法,可以在WuzhiCMS中发现更多潜在的安全问题。建议开发者参考此报告修复漏洞,或考虑迁移到更安全的CMS平台。

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