Clash Verge-任意文件写入
Clash Verge-任意文件写入
一、基本信息
- 影响版本: 最新版本(v2.2.3)依然受影响。(截止2025.05.22)
- 漏洞类型: 任意文件写入
二、漏洞简介
Clash Verge 配置不当导致本地任意文件写入 → 劫持各种程序文件 -> 远程代码执行(RCE)漏洞。
- 用户只需访问恶意网页,无需用户操作,即可:
- 利用CORS与无认证API服务进行配置覆盖;
- 写入任意文件至本地;
- 进一步通过软件程序劫持加载,实现远程代码执行(RCE)。
三、环境搭建
[!使用版本]
示:
Clash Verge版本2.2.3
四、复现步骤
1 任意文件写入
由于Clash的9097端口,API服务默认开启,未鉴权,导致直接调用。访问http://127.0.0.1:9097/configs
。
示:
返回响应
如果配置了API密钥,返回的结果如下
示:
通过 PUT 请求 /configs
接口,恶意网页可修改 Mihomo 的配置文件。配置文件字段被滥用,配置字段如 external-ui-url 可下载远程 ZIP 文件并解压,external-ui-name 与 external-ui 拼接路径,存在路径穿越绕过检查漏洞,利用..\\..\\
可将文件写入任意位置。
2 HTTP-POC
1 | PUT http://127.0.0.1:9097/configs HTTP/1.1 |
[!漏洞利用]
服务端部署恶意网页index.html和zip包。
示
index.html
ZIP包如下:
base64.py
示:
3 演示
攻击流程示意
- 用户访问恶意网页;
- 页面 JS 脚本构造 PUT 请求篡改本地的 Clash 配置;
- 本地机器远程下载 ZIP 文件到python的库中;
- 劫持python的base64库,触发执行,实现 RCE 执行任意py代码。
五、修复建议
配置API访问密钥。