這幾天傳的沸沸揚揚的就是Oracle的漏洞,Oracle 在全球的影響範圍較大,但是這次漏
洞存在於Weblogic java中間件的應用主機當中,目前漏洞影響的版本是Weblogic 10.3.6.0到
Weblogic 12.2.1.3,如果被攻擊者利用該漏洞,可以直接遠程執行系統的命令,導致主機被
入侵。
Oracle Weblogic 漏洞分析
首先我們需要發送漏洞代碼到主機裡,漏洞代碼裡指向並連接的遠程地址就是我們要攻擊的
Oracle Weblogic的主機,比如攻擊的IP是 127.0.0.1的7001端口,發送數據到7001端口,該
端口會接收來自於外面提交過來的數據,對數據包進行解密,通過readobject接口,中轉到127
.0.0.1主機上的1099端口上去,並執行我們寫好的惡意代碼,正常有漏洞的主機,會直接
彈出計算器。
Oracle Weblogic的主機,比如攻擊的IP是 127.0.0.1的7001端口,發送數據到7001端口,該
端口會接收來自於外面提交過來的數據,對數據包進行解密,通過readobject接口,中轉到127
.0.0.1主機上的1099端口上去,並執行我們寫好的惡意代碼,正常有漏洞的主機,會直接
彈出計算器。
然後我們再來啟用目標主機裡的JRMPListener的服務,該服務會自動將攻擊代碼發送的請求中
並執行,如下圖所示:
並執行,如下圖所示:
我們從Oracle Weblogic的日誌中看到執行的惡意代碼,導致錯誤代碼產生,並彈出我們要執行
打開計算器的應用。構造其他惡意代碼poc,其中最核心的部分是在於JRMP(Java Remote M
ethod protocol),在這個漏洞代碼中會序列化一個RemoteObjectInvocationHandler的服務,
然後打開UnicastRef建立到遠端的tcp連接獲取RMI registry,再通過請求並加載回來再利用
readObject安全解析,從而造成反序列化漏洞遠程代碼執行。
大致的調用棧如下:
打開計算器的應用。構造其他惡意代碼poc,其中最核心的部分是在於JRMP(Java Remote M
ethod protocol),在這個漏洞代碼中會序列化一個RemoteObjectInvocationHandler的服務,
然後打開UnicastRef建立到遠端的tcp連接獲取RMI registry,再通過請求並加載回來再利用
readObject安全解析,從而造成反序列化漏洞遠程代碼執行。
大致的調用棧如下:
readObject:66, InboundMsgAbbrev (weblogic.rjvm), InboundMsgAbbrev.java
-》readExternalData:1810, ObjectInputStream (java.io),
ObjectInputStream.java
—》readExternal:1433, StreamMessageImpl (weblogic.jms.common),
StreamMessageImpl.java
—–》readObject:455, RemoteObject (java.rmi.server), RemoteObject.java
該漏洞已通報給Oracle 數據庫公司,官方在4月17號發佈漏洞補丁,建議使用Oracle Weblogic
的用戶,盡快升級版本並打補丁。
的用戶,盡快升級版本並打補丁。