WebLogic WLS-WebServices組件反序列化漏洞分析

最近由於數字貨幣的瘋漲,大量機器被入侵後用來挖礦,其中存在不少部署了Weblogic服務的機器,因為Weblogic最近所爆出安全漏洞的exploit在地下廣泛流傳。回到這個漏洞本身,其原因在於WLS-WebServices這個組件中,因為它使用了XMLDecoder來解析XML數據。有安全研究人員在去年八月份就向官方報告了此漏洞,Oracle官方在今年四月份提供了補丁程序。但是,四月份提供的補丁感覺是在敷衍了事,因此很快就被繞過了。為此官方又只能新發補丁,不過十月份所提供的補丁,檢查還是比較嚴格。下面具體來看看此次反序列漏洞

0x01漏洞復現

測試環境 Weblogic 10.3.6.0/jdk1.6.0_45/Linux

漏洞POC

POST /wls-wsat/CoordinatorPortType11 HTTP/1.1nHost: 127.0.0.1:7001nCache-Control: max-age=0nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36nUpgrade-Insecure-Requests: 1nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8nAccept-Encoding: gzip, deflatenAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7nConnection: closenContent-Type: text/xmlnContent-Length: 777nn<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> n <soapenv:Header> n <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> n <java> n ·······n </java> n </work:WorkContext> n </soapenv:Header> n <soapenv:Body/> n</soapenv:Envelope>n

在漏洞復現過程中,只需將惡意的XML數據包發送到wls-wsat此路徑下的任意一個URL即可,因為後端處理流程都是一樣的。

0x02漏洞分析

此次漏洞出現在wls-wsat.war中,此組件使用了weblogic自帶的webservices處理程序來處理SOAP請求。首先在weblogic.wsee.jaxws.workcontext.WorkContextServerTube類中獲取XML數據最終傳遞給XMLDecoder來解析,其解析XML的調用鏈為

weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequestnweblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOldnweblogic.wsee.workarea.WorkContextXmlInputAdaptern

首先看到weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法

獲取到localHeader1後傳遞給readHeaderOld方法,其內容為<work:WorkContext>所包裹的數據,然後繼續跟進weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld方法

在此方法中實例化了WorkContextXmlInputAdapter類,並且將獲取到的XML格式的序列化數據傳遞到此類的構造方法中,最後通過XMLDecoder來進行反序列化操作。

關於XMLDecoder的反序化問題13年就已經被人發現,近期再次被利用到Weblogic中由此可見JAVA生態圈中的安全問題是多麼糟糕。值得一提的是此次漏洞出現了兩處CVE編號,因為在Oracle官方在修復CVE-2017-3506所提供的patch只是簡單的檢查了XML中是否包含了<object>節點,然後將<object>換為<void>即可繞過此補丁。因此在修復過程中用戶一定要使用Oracle官方十月份所提供的patch。

0x03漏洞修復

1. 臨時解決方案

根據業務所有需求,考慮是否刪除WLS-WebServices組件。包含此組件路徑為:

Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsatnMiddleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.warnMiddleware/wlserver_10.3/server/lib/wls-wsat.warn

以上路徑都在WebLogic安裝處。刪除以上文件之後,需重啟WebLogic。確認weblogic_ip/wls-wsat/ 是否為404頁面。

2. 官方補丁修復

前往Oracle官網下載10月份所提供的安全補丁。如需幫助請諮詢info@chaitin.com。

0x04 參考資料

blog.diniscruz.com/2013

pwntester/XMLDecoder

oracle.com/technetwork/

安全服務號


推薦閱讀:

文件解析漏洞匯總
『別人在你眼中是什麼樣的人,那麼你自己就是什麼樣的人』這句話存在漏洞嗎?
在烏雲審核漏洞是一種怎樣的體驗?

TAG:网络安全 | WebLogicServer | 漏洞 |