cross-site scripting: dom 漏洞修复_WebLogic CVE20192647~2650 XXE漏洞分析

16b7cdf2008ece0086a7fac7638b876b.gif

作者:Longofo@知道创宇404实验室
时间:2019年4月26日

Oracle发布了4月份的补丁,详情见链接(https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html#AppendixFMW)

@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操作:

a47fc1a9a612b3dcae3ab65db349c699.png

应该就是对应的四个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攻击&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值