WxJava XXE 漏洞分析

栏目: 编程工具 · 发布时间: 5年前

内容简介:CVE-2019-5312WxJava 是一款基于Java开发的开源微信开发工具包,该工具包支持包括微信支付、开放平台、小程序、企业微信/企业号和公众号等的后端开发。在WxJava3.3.0版本中的WxJava 3.3.1.B及以前版本。

漏洞编号

CVE-2019-5312

漏洞简介

WxJava 是一款基于 Java 开发的开源微信开发 工具 包,该工具包支持包括微信支付、开放平台、小程序、企业微信/企业号和公众号等的后端开发。在WxJava3.3.0版本中的 BaseWxPayResult.java 文件的 getXmlDoc() 方法存在XML外部实体注入漏洞。

漏洞影响

WxJava 3.3.1.B及以前版本。

环境搭建

  • Java 运行环境
  • Nginx (查看访问log,用于XXE盲注)
  • 漏洞代码(WxJava 3.3.1.B)

补丁分析

在github上进行 commit diff 对比

WxJava XXE 漏洞分析

可以看到作者已经在在创建 DocumentBuilderFactory 类的实例之后进行了 setFeature 禁用DTD文档。

在补丁上面一行发现作者已经通过 setExpandEntityReferences()DocumentBuilderFactory 实例的 expandEntityRef 属性设置为 false 了,此处修改对应另一个漏洞 CVE-2018-20318 ,但这个修改并没有禁用外部实体的引用,也就是说并没有任何效果。深挖之后发现这可能是JAVA JDK的一个BUG: DOM parser does not honor DocumentBuilderFactory.setExpandEntityReferences(false) ,此BUG当前状态为IN PROGRESS,疑似还未修复。

漏洞分析

初始化 WxPayOrderQueryResult 类实例,通过 setXmlString() 方法设置 xmlString ,然后调用此类实例的 toMap() 方法将xml文档转换为Map。在此调用了此类的 getXmlDoc() 方法。

WxJava XXE 漏洞分析

进入 getXmlDoc() 方法中发现此处已经对 DocumentBuilderFactory 实例进行了 setExpandEntityReferences() 的设置,但因为刚才提到的JDK BUG,此设置未生效。在这里依然可以解析DTD文档和外部实体,触发漏洞。

WxJava XXE 漏洞分析

PoC

构造PoC如下:

WxJava XXE 漏洞分析

执行结果:

WxJava XXE 漏洞分析

修复建议

更新WxJava版本到3.3.2.B及以上。


以上所述就是小编给大家介绍的《WxJava XXE 漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据科学入门

数据科学入门

[美] Joel Grus / 高蓉、韩波 / 人民邮电出版社 / 2016-3 / 69.00元

数据科学是一个蓬勃发展、前途无限的行业,有人将数据科学家称为“21世纪头号性感职业”。本书从零开始讲解数据科学工作,教授数据科学工作所必需的黑客技能,并带领读者熟悉数据科学的核心知识——数学和统计学。 作者选择了功能强大、简单易学的Python语言环境,亲手搭建工具和实现算法,并精心挑选了注释良好、简洁易读的实现范例。书中涵盖的所有代码和数据都可以在GitHub上下载。 通过阅读本书,......一起来看看 《数据科学入门》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具