JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告

0x001 背景

  JavaMelody是一款运行在Java Web容器中,用来监控Java内存和服务器CPU使用情况的工具,可以通过图表给出监控数据,方便研发运维等找出响应瓶颈、优化响应等。

      该组件低版本存在一个XXE漏洞——CVE-2018-15531,由于该组件的启动特性,攻击者无需特定的权限即可发起攻击。

 

0x002 实验环境

首先需要安装JavaMelody组件,

Github地址:https://github.com/javamelody/javamelody/releases

 

这里我们选择使用的JavaMelody 1.73.1版本进行漏洞复现。 

 

移动javamelody-cre-1.73.1.ar文件到 WebContent-META-INF-lib目录下

 

0x003 调试分析

单击index.html文件,右键->运行方式->Run on Server

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第1张图片

 访问本地端口,可以看到页面说明开启成功,然后停止运行。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第2张图片

寻找下断位置, 首先看看官方补丁。

漏洞修复的commit地址如下:

https://github.com/javamelody/javamelody/commit/ef111822562d0b9365bd3e671a75b65bd0613353#diff-c059097bc33b06c0b5da2d9b7787e806

增加了两行代码,作用分别是禁用DTD和禁用外部实体,如图所示:

 JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第3张图片

 

在未修复补丁处双击下断点。

debug模式运行。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第4张图片

 

使用burpsuite构建payload触发漏洞进行调试分析。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第5张图片

右键打开调用层次结构。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第6张图片

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第7张图片

 

我们可以看到调用链。

      MonitoringFilter拦截器 –> doFilter() -> createRequestWrapper() -> PayloadNameRequestWrapper  ->  initialize()  ->  parseSoapMethodName()

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第8张图片

 

 

通过堆栈回溯分析,可以看到触发需求。

contentType类型符合:application/soap+xml 或者 text.xml

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第9张图片

 

就调用xml解析函数,触发xxe攻击。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第10张图片

 

nc -lvp 80 监控本地80端口数据包。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第11张图片

 

据此,编写自动验证poc。

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第12张图片

 

 

 

 0x004 修复方案

 禁用DTD和外部实体引用。

参考官方补丁:

JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告_第13张图片

 

0x005 参考文档

https://anquan.baidu.com/article/421 JavaMelody XXE漏洞(CVE-2018-15531)分析

 

转载于:https://www.cnblogs.com/Unconscious/p/11258648.html

你可能感兴趣的:(JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告)