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