weblogic t3協議回顯穿透nat思路


感謝大佬關注公眾號,不勝感激
powered by UnicodeSec

簡介

環境:Weblogic 12.1.3

實戰中,大多數weblogic都部署在內網環境中,通過Nat協議使處於外網的用戶訪問。對於正常用戶訪問來說沒有問題,對於攻擊者使用T3協議回顯或者攻擊,則會出現很大問題,會提示如下

對於該問題,網上的解釋如下

解決方案是啟動weblogic時,添加一個參數 -Dweblogic.rjvm.enableprotocolswitch=true。但是我們不可能奢求被攻擊者開啟這個參數,所以我們就需要通過其他方式去解決這個問題。
下圖錯誤堆棧

我們可以看出,需要想辦法修改t3發送的內容,將其中的公網地址和端口換為weblogic內網地址與端口。由此,延申出兩個問題

  1. 如何修改發送內容
  2. 如何根據weblogic的公網地址與端口,得到weblogic的內網地址與端口

1. 如何修改發送的協議內容

還是上圖,在WLInitialContextFactoryDelegate中,調用var10.FindOrCreateRJVM。最終會調用weblogic.rjvm.ConnectionManager.bootstrap,根據提供的公網url與port去創建一個JVMID。如圖。

隨后會調用weblogic.rjvm.ConnectionManager.findOrCreateConnection
這里與發包的函數主要如下

首先根據連接字符串,向待連接的weblogic服務器發送t3握手報文,返回一個MsgAbbrevJVMConnection類。

隨后調用this.createIdentifyMsg去生成t3協議報文,然后調用MsgAbbrevJVMConnection.sendMsg將協議內容通過t3協議發送給weblogic服務器。weblogic.rjvm.ConnectionManager.createIdentifyMsg的函數如下圖


我們從這里可以看出,會將JVMID var1的值,作為t3協議的header。

我們繼續回到ConnectionManager函數中,然后調用MsgAbbrevJVMConnection.sendMsg函數,最終發送斷點截圖如下

所以,如果想解決T3穿透nat,我們只需要魔改JVMIDhostAddress與dnsName以及一切與地址有關的東西,還有ports的值即可完成Nat內網穿透的任務。
最簡單的辦法,魔改JVMID即可。我們可以本地創建一個JVMID,修改里面的邏輯。

如圖所示

修改之后,重新執行一下,完美執行命令

2. 獲取weblogic內網地址與端口

這里我們需要回顧iiop協議穿透內網的知識。iiop在創建context的時候,會根據服務端返回的內網地址與端口,創建context。隨后通過context與weblogic交互時,會直接連接context中的內網地址。

在途中我們可以很明顯的看出,iiop協議會直接連接內網IP與端口,所以會爆出timeout錯誤。

在這里,我們可以通過iiop創建與服務器的連接,然后獲取其中的內網ip與port,如圖

自動獲取weblogic內網地址與端口的任務至此成功完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM