CatFish CMS V4.8.75最新版XSS漏洞审计
字数 1171 2025-08-18 11:38:37
CatFish CMS V4.8.75 XSS漏洞审计与分析
1. 漏洞概述
本文详细分析CatFish CMS V4.8.75版本中存在的跨站脚本(XSS)漏洞,该漏洞存在于后台文章编辑功能中,允许攻击者注入恶意JavaScript代码。
2. 环境准备
- 目标系统:CatFish CMS V4.8.75
- 测试工具:Burp Suite
- 测试账号:123/123(测试用)
3. 漏洞发现过程
3.1 前台功能点测试
3.1.1 搜索框测试
- 注入测试代码:
<script>alert('1')</script> - 使用Burp Suite修改请求包
- 结果:测试代码未生效,存在防护过滤
3.1.2 评论功能测试
- 需要先登录(测试账号:123/123)
- 注入测试代码
- 结果:评论成功但代码未触发,存在过滤或转义
3.1.3 留言功能测试
- 在留言内容框注入测试代码
- 使用Burp修改数据包
- 结果:测试代码未触发,存在防护
3.2 后台功能点测试
3.2.1 文章编辑功能
- 进入后台->写文章->代码编辑模式
- 插入测试代码:
<script>alert('1')</script> - 发布文章后查看
- 结果:测试代码成功触发
4. 代码分析
4.1 漏洞位置
catfish\application\admin\controller\Index.php中的write方法
4.2 关键代码分析
$biaoti = $this->request->post('biaoti', '', null);
4.2.1 POST函数分析
路径:catfish\catfish\library\think\Request.php
- 未对用户输入进行过滤或替换
4.2.2 INSTANCE函数分析
与POST函数同路径
- 同样未做过滤转换
4.3 前台防护机制
前台留言功能模块(同文件)使用了htmlspecialchars函数:
$content = htmlspecialchars($this->request->post('content'));
- 将用户输入转换为HTML实体
- 有效防止XSS攻击
5. 漏洞利用条件
- 攻击者需要拥有后台账号权限
- 能够访问文章编辑功能
- 系统未对文章内容进行输出编码
6. 修复建议
- 对所有用户输入进行HTML实体编码:
$biaoti = htmlspecialchars($this->request->post('biaoti'), ENT_QUOTES);
-
实现内容安全策略(CSP)头
-
对输出内容进行编码处理
-
使用现代前端框架(如Vue、React)的内置XSS防护
7. 审计技巧
7.1 快速定位功能点代码
使用Burp Suite:
- 拦截目标请求
- 分析请求路径和参数
- 在代码中搜索相关控制器和方法
7.2 常见XSS注入点检查
- 所有用户输入点(表单、URL参数等)
- 数据库存储后输出的内容
- 动态生成的HTML、JavaScript代码
8. 总结
该XSS漏洞主要存在于CatFish CMS后台的文章编辑功能中,由于未对用户输入进行适当过滤和输出编码,导致可以注入恶意脚本。虽然需要后台权限才能利用,但仍存在安全风险,建议开发者对所有用户输入进行严格过滤和编码处理。