| 关键词: payload 引号 标签 漏洞 字符 自动 文件 文件夹 复测 |
0x00 前言 本文由我们原创,被许多媒体转载过,黑客教程、技术文章,关注:掌控安全EDU hello我是掌控安全学院的聂风,早前中国蚁剑爆出客户端RCE,不过官方第一时间修复了。于是实验室的老师们看了一下,于是绕过了防护,于是有了新的RCE漏洞。~_~ Tips:我们有开课讲解部分文章漏洞原理、欢迎扫描文末二维码报名课程 0x01 环境搭建 中国蚁剑 windows直接下载运行 如果是Linux或者是MAC 可以使用AntSword加载器 0x02 漏洞分析 首先对蚁剑进行复测,发现分类目录处的XSS并没有被修复,可能因为过于鸡肋项目方忽略了。(不过需要右键点击空白处) 接着我们复测了之前的RCE,发现该漏洞已被过滤修复,我们来简单分析一下是怎么修复的。 新加上用来过滤的noxss函数 在source/app.entry.js文件中 ![]() 这里很明显使用了JS的替换,而我们能看到替换的内容,其实也就是类似于进行了html实体编码 ![]() 我们发现它调用了dhtmlx框架 ![]() 接着我们来看这个UI框架 通过分析,该框架的dhtmlxtoolbar.js文件有点儿小毛病 该文件第1775行 这段代码会将获取到的参数直接拼接到input标签里面,而UI框架没有任何过滤 于是乎我们找到了文件路径处,这里存在一个我们可以控制的标签(可Xss) 0x03 攻击手法 这里原本是一个input标签,我们可以构建oninput事件来触发该XSS Payload: ‘oninput=alert(1) ;’ 输入语句,很明显该XSS生效了,接着输入字符,成功弹窗 ![]() 那么有个小问题,这个oninput标签是需要交互式触发的,看起来很鸡肋,但是经过一个微妙组合,就可以自动触发了 科普: autofocus:是能够让input自动获取焦点的属性。 onfocus:当input自动获取焦点时会触发事件。 触发点在路径上,如果我将一个文件夹命名为我们的payload,当蚁剑连接时就可以成功触发漏洞。 ![]() 我们还可以将网站的根目录设置为这个文件夹,当攻击者想要连接我们站上的shell时,我们就能反杀回去-.- ![]() ![]() XSS部分概述完毕,但我们最终是要进行RCE命令执行。 我们将构建语句完成一次SSJI(服务器端JavaScript注入) 利用障碍 Linux文件名的长度限制是255个字符 windows下完全限定文件名必须少于260个字符,目录名必须小于248个字符,且不能参杂特定字符给文件夹命名。 绕过障碍 正常payload基本大于长度限制。我们需要缩短payload长度 我们可以使用外部引用,因为蚁剑使用了jquery,故可以使用$.getScript来引用外部js脚本,虽然文件夹名中不可含有//,但我们可以使用unescape代码对payload进行加密 最终 Payload: ![]() Xss平台那边的payload代码,我们就直接拿之前爆出的RCE利用代码 payload: Base64解码出来就是 由此我们得到了一个反弹到本地的CMDshell. 结言 本篇文章提到的SSJI,我们有一个审计专题SSJI —— Node.js漏洞审计系列做简单介绍,欢迎关注公众号了解。 |
| 本文出处: https://www.toutiao.com/a6756051635123782151/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|