Javaweb框架ZK CVE-2022-36537漏洞分析附exp
前言
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框架身份验证绕过

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

从漏洞描述来看,如果路由/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参数并进行请求转发。

该请求必须为multipart类型

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

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

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

发起ajax请求

获取dtid

填入dtid和对应JSESSIONID


尝试访问页面
nextURI=/Configuration/server-info.zul

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

自动获取
使用webdriver获取


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

优化


ConnectWise R1Soft Server Backup Manager RCE

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

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

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

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

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

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。

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

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

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

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

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

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

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


自动上传
模拟上传驱动过程

利用演示
请使用以下链接观看视频: 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]。

补丁下载
[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
郑重声明:本文版权归原作者所有,转载文章仅为传播信息之目的,不构成任何投资建议,如有侵权行为,请第一时间联络我们修改或删除,多谢。
XRP 涨至 7.5 美元?分析师告诉 XRP 大军为纯粹的烟火做好准备!
加密货币分析师 EGRAG 表示,XRP 即将迎来关键时刻,价格可能大幅上涨,这取决于能否突破关键...
今晚ETH迎来暴涨时代 op、arb、metis等以太坊二层项目能否跑出百倍币?
北京时间7月23日晚上美股开盘后 ETH 的ETF开始交易。ETH的里程碑啊,新的时代开启。突破前...
Mt Gox 转移 28 亿美元比特币 加密货币下跌 ETH ETF 提前发行
2014 年倒闭的臭名昭著的比特币交易所 Mt Gox 已向债权人转移了大量比特币 (BTC),作...
Numen Cyber
文章数量
17粉丝数
0