Javaweb框架ZK CVE-2022-36537漏洞分析附exp

2022-12-09 22:12:51

前言

ZK是构建企业Web应用程序的领先开源JavaWeb框架。ZK下载量超过2000000次,为众多公司和机构提供了支持,从小型公司到多个行业的《财富》世界500强。

R1Soft Server Backup Manager(SBM)为服务提供商提供了一个灵活、服务器友好的解决方案,消除了运行传统备份的麻烦。用户可以每15分钟运行一次备份,而不会影响服务器性能。近1800家服务提供商使用它来保护250000台服务器。

受影响版本

ZK框架v9.6.1、9.6.0.1、9.5.1.3、9.0.1.2和8.6.4.1。

ConnectWise Recover v2.9.7及更早版本受到影响。

R1Soft Server Backup Manager v6.16.3及更早版本受到影响。

ZK框架身份验证绕过


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

[ZK-5150] Vulnerability in zk upload - ZK-Tracker


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

从漏洞描述来看,如果路由/zkau/upload包含nextURI参数,ZK AuUploader servlet会进行forward请求转发,该转发可以绕过身份认证,返回web上下文中的文件,如获取web.xml、zk页面、applicationContext-security.xml配置信息等。

分析

直接看webapps/web-temp/ui/WEB-INF/lib/zk-7.0.6.1.jar!/org/zkoss/zk/au/http/AuUploader.class#service()方法,接收了nextURI参数并进行请求转发。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

该请求必须为multipart类型


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

请求构造

尝试转发到web.xml,响应ZK-Error头为410,说明失败了,dtid为随便输入的字符。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

观察http请求,发现dtid是随机生成的,并且附带了JSESSIONID。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

分析前端调用的js,发现从zk.Desktop对象获取了dtid。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

发起ajax请求


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

获取dtid


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

填入dtid和对应JSESSIONID


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

尝试访问页面

nextURI=/Configuration/server-info.zul


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

发现绕过了身份验证,获取到了应用的敏感信息。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

自动获取

使用webdriver获取


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

显然这种方式不是很方便,笔者随后发现在访问login.zul时dtid已经生成并且在响应包中。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

优化


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

ConnectWise R1Soft Server Backup Manager RCE


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

R1Soft Server Backup Manager使用了zk框架,并且支持设置jdbc驱动,从而导致远程命令执行并接管该服务器。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

分析

jdbc上传处理zk-web/WEB-INF/classes/com/r1soft/backup/server/web/configuration/DatabaseDriversWindow.class#onUpload()方法 。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

跟入processUploadedMedia()方法,获取了文件流。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

传入webapps/lib/cdpserver.jar!/com/r1soft/backup/server/facade/DatabaseFacade.class#uploadMySQLDriver()方法。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

通过uploadDriverFile()方法写出文件。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

webapps/lib/cdpserver.jar!/com/r1soft/backup/server/worker/db/mysql/MySQLUtil.class#hasMySQLDriverClass()会判断上传的jar包是否有org/gjt/mm/mysql/Driver.class,否则不会添加到classpath中,返回The file does not contain the MySQL JDBC database driver。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

webapps/lib/cdpserver.jar!/com/r1soft/util/ClassPathUtil.class#addFile()方法调用URLClassLoader添加jar包到classpath中。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

最后webapps/lib/cdpserver.jar!/com/r1soft/backup/server/facade/DatabaseFacade.class#testMySQLDatabaseDriver()进行驱动测试。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

webapps/lib/cdpserver.jar!/com/r1soft/backup/server/db/mysql/MySQLDatabaseConnection.class#driverTest()最终在Class.forName时执行了Driver中的静态代码块。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

jdbc backdoor

早在2018年时就有人提出jdbc backdoor,一部分应用程序在ui界面允许管理员上传jdbc驱动,这样非常方便,无需登陆服务器添加相关jar包。但DriverManager中的静态代码块会默认执行,从而可以执行任意代码。具体原理可以看看SPI机制是如何实现JDBC的,这里不再阐述。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

编写恶意com.mysql.jdbc.Driver,其实就是实现java.sql.Driver接口相关方法,在静态代码块中添加恶意代码。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

替换合法jdbc包中的com.mysql.jdbc.Driver。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

请求构造

回到ZK框架机制本身,页面每个元素都会随机生成唯一标识,需要模拟整个请求过程,拿登陆举例。


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp
      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

自动上传

模拟上传驱动过程


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

利用演示

请使用以下链接观看视频: https://mp.weixin.qq.com/s?__biz=Mzg4MDcxNTc2NA==&tempkey=MTE5NV9uUUpJNnFtWEZFOXhBd0JiNXZVcUY3OWR3bW00WjF6Q055bXBFNEM0dWFjS3hYTVQ0R0Y2ekV0UFFJLTJPMUE0Sm51R1dNRGdjVnhrMDZ5WGlYNnB0SXRLQVVKYlliajFKbW5raUZEeUF5OVlpdE9GZ1FSWThWVkRNdjdnQWgwb1c4T3FMUC1PM1loT0R1WW95MWRBN0NFbXRIUm5RMG5hNU1mYkpBfn4%3D&chksm=cf71b6bff8063fa947f89135db21b94f0fc0d03bd2feb83525abbd7f684e5795f712da3156ca&token=2067341768&lang=zh_CN#rd

完整的exp请访问:https://github.com/numencyber/VulnerabilityPoC/tree/main/CVE-2022-36537

总结

R1Soft Server Backup Manager使用ZK框架作为主框架,其安全性需要各Web3项目方提高重视,及时关注各种Web3基础架构的安全漏洞并及时打好补丁,以避免潜在的安全风险和数字资产损失。我们将及时挖掘,追踪各种web3上的安全风险,以及提供领先的安全解决方案,确保web3世界链上,链下安全无虞。

互联网影响

通过Shodan发现了4000多个暴露的Server Backup Manager,很有可能会被攻击者利用接管主服务器和agent主机权限并下发勒索软件。建议各Web3项目方提高重视,及时升级到安全版本,以避免潜在的安全风险和数字资产损失。如有任何疑问或技术交流,欢迎联系我们 [email protected]


      Javaweb框架ZK CVE-2022-36537漏洞分析附exp

补丁下载

[ZK-5150] Vulnerability in zk upload - ZK-Tracker

ConnectWise Recover and R1Soft Server Backup Manager Critical Security Release

 

关于更多详情,欢迎访问:  https://mp.weixin.qq.com/s?__biz=Mzg4MDcxNTc2NA==&tempkey=MTE5NV9uUUpJNnFtWEZFOXhBd0JiNXZVcUY3OWR3bW00WjF6Q055bXBFNEM0dWFjS3hYTVQ0R0Y2ekV0UFFJLTJPMUE0Sm51R1dNRGdjVnhrMDZ5WGlYNnB0SXRLQVVKYlliajFKbW5raUZEeUF5OVlpdE9GZ1FSWThWVkRNdjdnQWgwb1c4T3FMUC1PM1loT0R1WW95MWRBN0NFbXRIUm5RMG5hNU1mYkpBfn4%3D&chksm=cf71b6bff8063fa947f89135db21b94f0fc0d03bd2feb83525abbd7f684e5795f712da3156ca&token=2067341768&lang=zh_CN#rd

郑重声明:本文版权归原作者所有,转载文章仅为传播信息之目的,不构成任何投资建议,如有侵权行为,请第一时间联络我们修改或删除,多谢。

推荐文章

Layer2 格局剧变:Base 生态有哪些关键亮点?

在激烈竞争的 L2 赛道中,原本稳坐钓鱼台的 Arbitrum 和 Optimism 似乎面临着前...

加密泡泡啊
424 1年前

XRP 涨至 7.5 美元?分析师告诉 XRP 大军为纯粹的烟火做好准备!

加密货币分析师 EGRAG 表示,XRP 即将迎来关键时刻,价格可能大幅上涨,这取决于能否突破关键...

加密泡泡啊
430 1年前

以太坊ETF通过后 将推动山寨币和整个加密生态大爆发

比特币ETF通过后市场动荡,以太坊ETF交易前景分析 比特币ETF通过后,市场出现了先跌后涨的走势...

加密泡泡啊
440 1年前

ZRO为啥这么能涨?

ZRO概述 ZRO代币,全称为LayerZero,是LayerZero协议的本地代币,旨在作为治理...

加密泡泡啊
386 1年前

今晚ETH迎来暴涨时代 op、arb、metis等以太坊二层项目能否跑出百倍币?

北京时间7月23日晚上美股开盘后 ETH 的ETF开始交易。ETH的里程碑啊,新的时代开启。突破前...

BNBCCC
396 1年前

Mt Gox 转移 28 亿美元比特币 加密货币下跌 ETH ETF 提前发行

2014 年倒闭的臭名昭著的比特币交易所 Mt Gox 已向债权人转移了大量比特币 (BTC),作...

加密圈探长
400 1年前