这几天传的沸沸扬扬的就是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
的用户,尽快升级版本并打补丁。
的用户,尽快升级版本并打补丁。