win客户端黑盒挖掘

admin 2024年5月7日03:36:52评论11 views字数 3744阅读12分28秒阅读模式

强烈建议各大厂商自查客户端内嵌Chrome版本号、沙盒开启情况!

最近白捡了几个因为Chrome低版本导致的RCE漏洞

基于上面两篇文章,进行实践以及细节讲述,主要内容:

win PC客户端黑盒如何判断内嵌Chrome版本以及沙盒开启情况,寻找客户端伪协议接口和客户端js接口,并且进行漏洞挖掘。


使用工具

  • Chrome

  • procexp.exe   进程资源管理器 查看进程信息

  • Chrome RCE exp   漏洞利用

    • http://192.168.72.6/chrome_exp/1.html   <89的Chrome exp

    • http://192.168.72.6/chrome_exp/2.html   <95的Chrome exp

    • http://192.168.72.6/chrome_exp/3.html   便于调试的html页面,主要功能执行js。

  • Metasploit   漏洞利用工具

  • Fiddler  通过http/s请求包,查看程序Chrome版本


win客户端开发框架分类

  • Electron nodejs语言

  • QT框架  C++语言

  • CEF C/C++语言

本质还是功能既漏洞,发现功能是挖洞的第一步,很多时候使用这三种开发框架进行win客户端开发,都会有Chrome,我们主要侧重如何使得客户端里内嵌的Chrome页面变得可控。


示例

微信rce示例

用老版本微信,简单展示因为Chrome低版本导致的rce漏洞。

使用procexp进程管理工具,判断目标软件是否开启Chrome沙盒,以及Chrome内嵌版本情况。

win客户端黑盒挖掘

WeChatWeb.exe --type=renderer --no-sandbox --client-id=wechat --disable-databases --primordial-pipe-token=CEE93D149A6809C561C64C4AB497AA75 --user-agent-extra="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63010200)" --lang=en-US --lang=zh-CN --locales-dir-path="C:Users10101~1AppDataRoamingTencentWeChatAll UsersCefResources2585locales" --log-file="C:Users10101~1AppDataRoamingTencentWeChatlogcef.log" --resources-dir-path="C:Users10101~1AppDataRoamingTencentWeChatAll UsersCefResources2585" --enable-pinch --device-scale-factor=1 --num-raster-threads=2 --content-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --mojo-channel-token=123EAEB84ACA38AF13AB31328578CE49 --mojo-application-channel-token=CEE93D149A6809C561C64C4AB497AA75 --channel="9464.1.217022444635529677" --fix-fasa --mojo-platform-channel-handle=4140 /prefetch:1

如图所示,通过进程管理工具,发现该进程的参数存在 --no-sandbox ,以及UA版本是Chrome/53.0.2875.116,所以就存在因为内嵌Chrome版本较低,并且未开启沙盒,导致客户端RCE漏洞。

在实际该类漏洞挖掘中,第一步就是通过进程管理器,判断Chrome版本和沙盒开启情况,当然,有Chrome 0day的大佬不需要。


electron代码示例

伪协议

在目标客户端并没有类似微信这种社交功能时,可以考虑从别的方式入手,比如伪协议。

从代码层原理示例功能具体实现,以及挖洞思路,这里用electron简单开发了一个名为Nndercurrent_No3.exe的应用程序。

win客户端黑盒挖掘

向win注册表注册了一个名为myapp1的伪协议。

在实际黑盒挖掘中,可以直接用注册表搜索应用程序名来判断该程序是否存在伪协议。


win客户端黑盒挖掘

win客户端黑盒挖掘

如图就说明,该程序存在伪协议。

伪协议参数

win客户端黑盒挖掘

接收通过伪协议传来的url参数值,并且用该客户端窗口打开这个url。

win客户端黑盒挖掘

win客户端黑盒挖掘

通过浏览器打开myapp1://?url=http://192.168.72.6/chrome_exp/3.html   就使得该应用程序跳转进设置的这个url页面,在这类漏洞实际挖掘中,大多数时候需要一个特定url域的xss或者url跳转,进行特权域检测绕过。

寻找伪协议参数,可以通过去该程序的web站点分析js,或者进行反编译逆向,或者在github进行搜索。

拿tg举例:

win客户端黑盒挖掘

win客户端黑盒挖掘

然后对这些参数进行安全测试。


漏洞挖掘

win客户端黑盒挖掘

在打开该测试页面后。

  1. 如果如图UA显示Chrome版本低,并且有对应版本的Chrome exp,就可以试试Chrome的漏洞。

  1. 根据挖洞经验,electron都可以考虑进行node的命令执行试试,存不存在开发人员因为某些原因,可以直接执行nodejs命令执行的情况。

利用node系统库执行cmd命令const { exec } = require('child_process');exec('calc', (error, stdout, stderr) => {  if (error) {    alert(`Error executing command: ${error.message}`);    return;  }  if (stderr) {    alert(`Standard Error: ${stderr}`);  }  alert(`Standard Output: ${stdout}`);});
  1. 寻找客户端js接口

win客户端黑盒挖掘

如该程序,我就注册了一个名为electronAPI的客户端js接口,在实际该类漏洞挖掘中,如何发现js接口,也有很多种方式。

  1. 打开该程序目录,寻找web类资源文件,发现js接口。

  2. 逆向反编译

  3. Fiddler全局http/s代理,发现内嵌页面的url,在js里找。

  4. 通过js脚本暴力盲测

遍历js,发现window对象的可疑接口

寻找客户端js接口var viewElement = document.getElementById('view');for (var key in window) {    if (window.hasOwnProperty(key)) {     var propertyValue = window.key;    var propertyText = key;    var propertyNode = document.createTextNode(propertyText);        viewElement.appendChild(propertyNode);    viewElement.appendChild(document.createElement('br'));    }}

win客户端黑盒挖掘

发现了electronAPI这个接口,再进行下一步发现。

var viewElement = document.getElementById('view');for (var key in window.electronAPI) {  if (window.electronAPI.hasOwnProperty(key)) {    var propertyValue = window.electronAPI[key];    var propertyText = key;    var propertyNode = document.createTextNode(propertyText);    viewElement.appendChild(document.createElement('br'));    viewElement.appendChild(propertyNode);  }}

win客户端黑盒挖掘

command这个字符就有价值进行盲测试一试。

window.electronAPI.command('calc')

win客户端黑盒挖掘

End

整个流程,先判断目标软件是否是存在Chrome内嵌的情况,Chrome版本以及沙盒开启情况,并且内嵌的web页面是否可控,然后以上方式,或者其他方式进行功能发掘,之后分析这些功能是否存在安全漏洞,当然不止RCE,还有很多什么任意文件读取,uxss,信息泄露之类,winmacAndroid同理。


原文始发于微信公众号(鬼麦子):win客户端黑盒挖掘

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月7日03:36:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   win客户端黑盒挖掘https://cn-sec.com/archives/2713131.html

发表评论

匿名网友 填写信息