0x01 前言
周五的时候看了key佬的演讲受益良多呀,来水水,写下目前针对Windows客户端类程序的部分挖掘入口吧,然后分享一下随手挖的很简单很简单的案例。
传统客户端
监听类的:
这里说的监听类的,指的就是安装客户端后启动的端口服务,这个思路WEB、设备类的0Click几乎都是这样,Windows客户端这块看具体业务了也可能有,比如历史上某远控软件RCE、某VPN RCE。走的HTTP逆起来还是比较简单的,前阵子搞金融的私有协议的可难玩一些,不过还好最后交差了。
非监听类的
第一种:
虽然这种没有对外监听,但是有命令行或者图形化操作的功能,这种可以针对其程序功能挖掘,思路要打开,用来1Click或者提权等,举个简单的应用,比如某些程序安装之后是以System运行的,此时如果存在RCE或加载DLL的相关操作都是可以用来本地提权的,还有就是有些白签名程序,存在直接RCE或加载DLL都有绕过如某卫士、某擎信任链检测的效果。
第二种:
伪协议很多客户端其实都有伪协议,可以分析其功能来决定如何利用。案例的话比如钉钉的这个漏洞POC,通过伪协议可以加载JS配合Chromium V8漏洞来达到1 Click RCE的效果。
WEB类客户端:
比较主流的应该是这三个CEF、QtWebEngine、Electron都是基于Chromium引擎可以尝试Chromium漏洞,其中Electron还基于NodeJs,因为NodeJs的特性导致可以轻松RCE,其他两个应该是不行。
所以对于这种第一个是XSS配合NodeJs语法,比如蚁剑与Clash出现过的1 Click RCE都是功能点XSS搭配NodeJs来RCE。
有些情况下NodeIntegration为False不能直接使用NodeJs原生语法RCE,这个时候如果
ContextIsolation为False(默认就是False),就可以寻找Preload.js中的自定义API来寻找漏洞点。
参考如下解释。
第二个还是伪链接,跟传统客户端不同的是,如果找一个可以加载JS的伪链接,就可以配合上面提到的NodeJs特性或者Preload.js。
这次还看到key佬分享了一个使用WKE自定义前端渲染的漏洞案例,首先找到了一个可以加载任意JS的伪链接,然后寻找WkeJSbindFunction来看JS语法与本地函数的绑定情况,围绕这块去找Sink点。
下面来看一下前天随手挖的两个案例吧。
0x02 漏洞分析与利用
第一个:
发现安装某软件被控端之后开启两个服务。
OSPLinkProxy服务对应LinkProxy.exe。
访问对应对应服务端口33580。
发现一个路由。
接收名为"param"的参数。
对接收的参数内容进行了一次默认码表的Base64解密。
调用CreateProcessAsUserA传递"OpenLinkProxy.exe ShellExecute"拼接param解密后的内容。
逆向OpenLinkProxy发现最终调用ShellExecute且可传递执行的文件与参数。
测试可以执行。这种也可以单独利用,上面提到过。
IPC调用成功。
第二个:
不过多解释了,很简单LoadLibrary可控,GetProcAddress无参调用。
签名程序且高权限。
原文始发于微信公众号(小黑说安全):Windows客户端漏洞挖掘(红队角度)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论