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 似乎面臨着前...

加密泡泡啊
71 1個月前

XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!

加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...

加密泡泡啊
73 1個月前

以太坊ETF通過後 將推動山寨幣和整個加密生態大爆發

比特幣ETF通過後市場動蕩,以太坊ETF交易前景分析 比特幣ETF通過後,市場出現了先跌後漲的走勢...

加密泡泡啊
78 1個月前

ZRO為啥這么能漲?

ZRO概述 ZRO代幣,全稱為LayerZero,是LayerZero協議的本地代幣,旨在作為治理...

加密泡泡啊
66 1個月前

今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?

北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...

BNBCCC
75 1個月前

Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行

2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...

加密圈探長
71 1個月前