内容简介: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 对比
可以看到作者已经在在创建 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()
方法。
进入 getXmlDoc()
方法中发现此处已经对 DocumentBuilderFactory
实例进行了 setExpandEntityReferences()
的设置,但因为刚才提到的JDK BUG,此设置未生效。在这里依然可以解析DTD文档和外部实体,触发漏洞。
PoC
构造PoC如下:
执行结果:
修复建议
更新WxJava版本到3.3.2.B及以上。
以上所述就是小编给大家介绍的《WxJava XXE 漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析
- 【漏洞分析】CouchDB漏洞(CVE–2017–12635, CVE–2017–12636)分析
- 【漏洞分析】lighttpd域处理拒绝服务漏洞环境从复现到分析
- 漏洞分析:对CVE-2018-8587(Microsoft Outlook)漏洞的深入分析
- 路由器漏洞挖掘之 DIR-815 栈溢出漏洞分析
- Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。