<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反序列化攻擊不依賴日志溯源攻擊時間

    一顆小胡椒2022-07-23 20:08:07

     Part1 前言 

    WebLogic是美國Oracle公司出品一款中間件產品,在國內使用也比較廣泛。從2015年開始至今,接連爆出過10幾個可直接利用的Java反序列化漏洞,相關漏洞的原理也越來越復雜。每次應急響應過程中,遇到Oracle公司的產品都會特別頭疼,因為其日志結構太過繁雜,相關介紹文檔也很少,想弄明白是需要下一番功夫的。

    在日常的應急響應過程中,為了解決這個問題,我曾經反復搭建環境,反編譯各種Weblogic攻擊工具,跟蹤其源代碼,研究可以不依賴日志分析去快速解決Weblogic中間件應急響應的方法,流量監控設備通常會有各種報警,混雜在一起的時候,也很難確定準確的攻擊時間。對于早期Weblogic反序列化攻擊,我做應急響應的時候,ls -lah看一下Weblogic幾個目錄下新增的文件及文件時間屬性,就能判斷出攻擊者用的是哪一款Weblogic漏洞利用工具,而且還可以確定準確的攻擊時間,根本就不用去看日志。下面分享一下這個技巧,后續也會花很大篇幅講講Weblogic的日志結構及各種漏洞的應急溯源技巧,因為牽扯到Oracle公司的產品,都會很復雜。花很大精力:

     Part2 具體研究過程 

    • 虛擬機下測試

    本地搭建Weblogic的環境如下:

    使用Weblogic反序列化工具進行攻擊,查看服務器的/temp/目錄,會生成一個.tmp格式的臨時文件,然后查看此文件屬性,得知攻擊者執行命令的準確時間。

    將此tmp文件拷貝出來,改擴展名為.jar,使用jadx-gui工具反編譯,即可看到攻擊代碼,證明此文件確實是攻擊者遺留下來的。

    很多weblogic反序列化利用工具為了能通過T3協議回顯命令執行結果,都有類似的文件落地,也有的weblogic反序列化利用工具為了實現無文件落地回顯,是通過defineClass方法,從byte[]字節碼中還原一個Class對象,實現無文件落地注入構造回顯,這種應急方法不再適用。

    • Weblogic回顯的實現原理:

    應急方法講完之后,接下來看一下相關工具為什么會向/temp/目錄寫文件,首先要大體講一下T3反序列化回顯的原理:

    Weblogic對外提供Web服務,會開放7001等端口,這個端口是Web協議、T3協議、IIOP協議并存的,而T3協議允許客戶端遠程調用Weblogic服務端的類,然后把執行結果再傳輸給客戶端。因此攻擊者會在本地事先編譯好一個具有執行命令、上傳文件等功能的java類,接著將編譯好的文件上傳至服務器上,通過URLClassLoader加載這個編譯文件,在服務端綁定一個實例,進而實現T3下的Weblogic反序列化回顯,其實有點類似于RMI遠程方法調用的過程。 

    這里要指出,有的Weblogic利用工具向服務器寫入臨時文件時,并沒有關閉文件句柄,導致文件會一直存在服務器上。 

    • 常見Weblogic利用工具特征 

     1   首先看第一款實現Weblogic反序列化回顯的利用工具,是由冰蝎作者rebeyond大牛編寫的。我記得大概是15年年底時,冰蝎作者rebeyond第一個公布出Weblogic T3反序列化回顯方法,而且給出了相關的代碼。后續的研究者的回顯方法基本上與rebeyond的差不多,通過加載字節碼方式實現無文件落地回顯。

    我們反編譯一下rebeyond的工具,看看代碼的具體實現過程:

    通過Connect按鈕事件跟進,一直跟到GenPayload類的Gen方法,很明顯可以看到,這款工具會向服務器的臨時目錄寫入1vBLBK.tmp臨時文件:

    之后再通過URLClassLoader類加載這個tmp文件,在服務端綁定一個實例,進而實現T3回顯。

     2   接下來看另一款Weblogic反序列化利用工具:

    利用成功后,會在服務器上生成H3y5ec.tmp臨時文件。

    之后同樣使用URLClassLoader類加載,實現T3回顯。

     3   接下來看第3款Weblogic反序列化利用工具:

    可以看到,也會向服務器寫一個臨時文件

    同樣是使用URLClassLoader類加載,實現T3回顯:

     Part3 總結 

    1.  早期的Weblogic反序列化利用工具,為了實現T3協議回顯,都會向服務器上寫入一個臨時文件。近幾年隨著無文件落地的流行,Weblogic的回顯基本上都是找一個實現了defineClass方法的類,通過還原字節碼方式實現回顯,這種應急方法不再適用。

    2.  應急溯源過程中,日志量通常浩如煙海,而且容易被攻擊者刪掉。在此情況,研究一下攻擊者常用工具的原理,總結一些小技巧,在日常應急溯源工作中,會事半功倍,省去很大的工作量。

    序列化weblogic
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    weblogic T3 attack&cve
    2023-03-29 10:07:32
    定義了固定的t3header和反序列化標志頭fe010000。RFC1700規定使用“大端”字節序為網絡字節序,所以對生成的payload使用>大端模式打包,I表示unsigned int。CVE-2016-0638復現需要打補丁,找不到懶得打了,簡單說一下繞過,不寫poc了黑名單列表為:+org.apache.c
    接到一個緊急測試任務,只有一個目標名稱和一個ip。這樣的話webshell的url就無法正常訪問了)帶上cookie即可正常連接。連接成功后,為了穩定webshell,我們嘗試將webshell寫入到根目錄和靜態文件的目錄,但是仍會受到強制跳轉的影響。于是將webshell內容寫入到了在登陸前就能訪問的jsp正常文件中,來穩定shell。
    通過common-collection相關gadget,想辦法調用org.mozilla.classfile.DefiningClassLoader這個類去加載字節碼。然后通過T3協議的反序列化漏洞發送給待攻擊weblogic服務器。
    Weblogic是美國Oracle公司出品的一個應用服務器(application server),確切的說是一個基于Java EE架構的中間件,是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和 數據庫應用的Java應用服務器。 Weblogic將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中,是商業市場上主要的Java(J
    我記得大概是15年年底時,冰蝎作者rebeyond第一個公布出Weblogic T3反序列化回顯方法,而且給出了相關的代碼。早期的Weblogic序列化利用工具,為了實現T3協議回顯,都會向服務器上寫入一個臨時文件。
    WebLogic是用于開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。
    4月17日,國家信息安全漏洞共享平臺(CNVD)公開了Weblogic序列化遠程代碼執行漏洞(CNVD-C-2019-48814/CVE-2019-2725),由于在反序列化處理輸入信息的過程中存在缺陷,未經授權的攻擊者可以發送精心構造的惡意 HTTP 請求,利用該漏洞可獲取服務器權限,實現遠程代碼執行。官方緊急補丁(CVE-2019-2725)已于4月26日發布。 近日,有消息稱CVE-201
    前言護網時平時遇到的針對weblogic等中間件漏洞利用以及漏洞掃描的很多,但是我看到某態勢的流量的時候發現態勢的探針的監測不單單是基于披露的poc或者exp來產生的告警。
    最近在網上看到有大佬公布了一個有意思的 Weblogic SSRF ,本質上其實是 Oracle JDBC Driver 中的類在反序列化操作時會自動發送 JDBC 連接,結合 Weblogic T3 反序列化操作就可以實現 SSRF。
    該漏洞是繼CVE-2015-4852、CVE-2016-0638、CVE-2016-3510之后的又一個重量級反序列化漏洞。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类