暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Weblogic WLS Core Components 反序列化命令执行漏洞

Graysons 2021-08-16
664

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

   



影响版本范围

  • Weblogic 10.3.6.0

  • Weblogic 12.1.3.0

  • Weblogic 12.2.1.2

  • Weblogic 12.2.1.3



复现环境

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已成功创建。

          修复建议

          1.  此漏洞产生于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]。

            文章转载自Graysons,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论