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. 漏洞利用条件

  1. 攻击者需要拥有后台账号权限
  2. 能够访问文章编辑功能
  3. 系统未对文章内容进行输出编码

6. 修复建议

  1. 对所有用户输入进行HTML实体编码:
$biaoti = htmlspecialchars($this->request->post('biaoti'), ENT_QUOTES);
  1. 实现内容安全策略(CSP)头

  2. 对输出内容进行编码处理

  3. 使用现代前端框架(如Vue、React)的内置XSS防护

7. 审计技巧

7.1 快速定位功能点代码

使用Burp Suite:

  1. 拦截目标请求
  2. 分析请求路径和参数
  3. 在代码中搜索相关控制器和方法

7.2 常见XSS注入点检查

  1. 所有用户输入点(表单、URL参数等)
  2. 数据库存储后输出的内容
  3. 动态生成的HTML、JavaScript代码

8. 总结

该XSS漏洞主要存在于CatFish CMS后台的文章编辑功能中,由于未对用户输入进行适当过滤和输出编码,导致可以注入恶意脚本。虽然需要后台权限才能利用,但仍存在安全风险,建议开发者对所有用户输入进行严格过滤和编码处理。

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 关键代码分析 4.2.1 POST函数分析 路径: catfish\catfish\library\think\Request.php 未对用户输入进行过滤或替换 4.2.2 INSTANCE函数分析 与POST函数同路径 同样未做过滤转换 4.3 前台防护机制 前台留言功能模块(同文件)使用了 htmlspecialchars 函数: 将用户输入转换为HTML实体 有效防止XSS攻击 5. 漏洞利用条件 攻击者需要拥有后台账号权限 能够访问文章编辑功能 系统未对文章内容进行输出编码 6. 修复建议 对所有用户输入进行HTML实体编码: 实现内容安全策略(CSP)头 对输出内容进行编码处理 使用现代前端框架(如Vue、React)的内置XSS防护 7. 审计技巧 7.1 快速定位功能点代码 使用Burp Suite: 拦截目标请求 分析请求路径和参数 在代码中搜索相关控制器和方法 7.2 常见XSS注入点检查 所有用户输入点(表单、URL参数等) 数据库存储后输出的内容 动态生成的HTML、JavaScript代码 8. 总结 该XSS漏洞主要存在于CatFish CMS后台的文章编辑功能中,由于未对用户输入进行适当过滤和输出编码,导致可以注入恶意脚本。虽然需要后台权限才能利用,但仍存在安全风险,建议开发者对所有用户输入进行严格过滤和编码处理。