编程语言
首页 > 编程语言> > JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告

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

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

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

漏洞修复的commit地址如下:

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

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

 

 

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

debug模式运行。

 

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

右键打开调用层次结构。

 

我们可以看到调用链。

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

 

 

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

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

 

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

 

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

 

 

 0x004 修复方案

 禁用DTD和外部实体引用。

参考官方补丁:

 

0x005 参考文档

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

 

标签:xml,javamelody,15531,漏洞,2018,JavaMelody,组件
来源: https://www.cnblogs.com/Unconscious/p/11258648.html