WebLogic CVE-2019-2647、CVE-2019-2648、CVE-2019-2649、CVE-2019-2650 XXE漏洞分析

本文详细分析了WebLogic 10.3.6.0中的多个XXE漏洞,包括CVE-2019-2647、CVE-2019-2648、CVE-2019-2649和CVE-2019-2650。作者通过对比补丁,发现了这些漏洞的关键点,并分享了PoC构造过程和环境搭建经验。文章探讨了在反序列化过程中如何利用XML External Entity(XXE)漏洞,并展示了如何通过修改类文件来触发漏洞。
摘要由CSDN通过智能技术生成

@xxlegend在《Weblogic CVE-2019-2647等相关XXE漏洞分析》分析了其中的一个XXE漏洞点,并给出了PoC。刚入手java不久,本着学习的目的,自己尝试分析了其他几个点的XXE并构造了PoC。下面的分析我尽量描述自己思考以及PoC构造过程,新手真的会踩很多莫名其妙的坑。感谢在复现与分析过程中为我提供帮助的小伙伴@Badcode,没有他的帮助我可能环境搭起来都会花费一大半时间。

补丁分析,找到漏洞点

根据JAVA常见XXE写法与防御方式(参考https://blog.spoock.com/2018/10/23/java-xxe/),通过对比补丁,发现新补丁以下四处进行了setFeature操作:

应该就是对应的四个CVE了,其中ForeignRecoveryContext@xxlegend大佬已经分析过了,这里就不再分析了,下面主要是分析下其他三个点

分析环境

Windows 10
WebLogic 10.3.6.0
Jdk160_29(WebLogic 10.3.6.0自带的JDK)
WsrmServerPayloadContext 漏洞点分析

WsrmServerPayloadContext修复后的代码如下:

package weblogic.wsee.reliability;
import ...

public class WsrmServerPayloadContext extends WsrmPayloadContext {
    public void readExternal(ObjectInput var1) throws IOException, ClassNotFoundException {
        ...
        }

    private EndpointReference readEndpt(ObjectInput var1, int var2) throws IOException, ClassNotFoundException {
        ...

        ByteArrayInputStream var15 = new ByteArrayInputStream(var3);

        try {
            DocumentBuilderFactory var7 = DocumentBuilderFactory.newInstance();

            try {
                String var8 = "http://xml.org/sax/features/external-general-entities";
                var7.setFeature(var8, false);
                var8 = "http://xml.org/sax/features/external-parameter-entities";
                var7.setFeature(var8, false);
                var8 = "http://apache.org/xml/features/nonvalidating/load-external-dtd";
                var7.setFeature(var8, false);
                var7.setXIncludeAware(false);
                var7.setExpandEntityReferences(false);
            } catch (Exception var11) {
                if (verbose) {
                    Verbose.log("Failed to set factory:" + var11);
                }
            }

       ...
    }

}
可以看到进行了setFeature操作防止xxe攻击,而未打补丁之前是没有进行setFeature操作的

readExternal在反序列化对象时会被调用,与之对应的writeExternal在序列化对象时会被调用,看下writeExternal的逻辑:

var1就是this.formENdpt,注意var5.serialize可以传入三种类型的对象,var1.getEndptElement()返回的是Element对象,先尝试新建一个项目构造一下PoC:

结构如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebLogic12.2.1.3补丁 p29814665_122130 该补丁合集修复了下面新增的安全漏洞: 29585099 THE BACKPORT OF 27057023 CONTAINS AN ERROR 23071867 AGL DS XA AFFINITY NOT HONORED IN SOME TX LOCAL RESOURCE ASSIGNMENT SCENARIOS 29448643 JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29671623 CVE-2019-2725 26403575 CVE-2016-7103 29667975 CVE-2019-2824 29726561 CVE-2019-2729 29701537 CVE-2019-2827 1.2 Oracle WebLogic 12.1.3.0.190716 该补丁合集修复了下面新增的安全漏洞: 29667975: CVE-2019-2824 29671623: CVE-2019-2725 26403575: CVE-2016-7103 29701537: CVE-2019-2827 29870012: WLDATASOURCE.GETCONNECTIONTOINSTANCE(STRING INSTANCE) CAN FAIL IF NO CONNECTIONS TO INSTANCE HAVE BEEN PROCESSED 29448643: JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29312272: WSDL ERROR MUST ATTRIBUTE 'NAME' NOTFOUND IN ELEMENT 'BINDING 23071867: AGL DS XA AFFINITY NOT HONORED IN SOME TX LOCAL RESOURCE ASSIGNMENT SCENARIOS 29726561: CVE-2019-2729 1.3 Oracle WebLogic 12.2.1.3.190522 该补丁合集修复了下面新增的安全漏洞: 25369207: JAVA.LANG.OUTOFMEMORY ERROR HAPPENS WHEN INITIALIZING AN APPLICATION 29338121: CVE-2019-2799 29448643: JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29312272: WSDL ERROR MUST ATTRIBUTE 'NAME' NOTFOUND IN ELEMENT 'BINDING 26987594: ALLOW SUPRESSING CROSS COMPONENT WIRING PROCESSING DURING PROVISIONING 27010571: <INCOMING MESSAGE HEADER OR ABBREVIATION PROCESSING FAILED 26075541: .APPMERGEGEN_$DIGIT DIR REMAIN EVERY TIME BY DEPLOYING A EAR ON WLS 12.2.1 27823500: REGRESSION BUG WHICH INTRODUCED BY THE BUG FIXING OF 27678101 27248932: TRACKING BUG FOR 26941603 FOR WLS 25294832: WLS 12.2.1.2 DEPLOYMENT ERRORSMETHOD _JSPSERVICE EXCEEDS 65535 BYTES LIMIT 26131085: IMPROVE CORRUPT STORE RECOVERY 27659077: JSPS ARE GETTING RECOMPILED ON EVERY REQUEST 26403575: CVE-2016-7103 29667975: CVE-2019-2824 28278427: VERSION ADDED TWICE WHEN SAVING A SECURITY POLICY 29726561: CVE-2019-2729 29701537: CVE-2019-2827 29411629: CVE-2019-2856 29789769: FIXED AN ISSUE WITH XML
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值