Oracle Weblogic 远程代码执行漏洞利用与安全分析



           这几天传的沸沸扬扬的就是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端口上去,并执行我
们写好的恶意代码,正常有漏洞的服务器,会直接

弹出计算器。

 
 
然后我们再来启用目标服务器里的JRMPListener的服务,该服务会自动将攻击代码发送的请求中

并执行,如下图所示:

 
 
我们从Oracle Weblogic的日志中看到执行的恶意代码,导致错误代码产生,并弹出我们要执行

打开计算器的应用。
构造其他恶意代码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

的用户,尽快升级版本并打补丁。
分享: