码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-07-28 15:33:47      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:load   tps   debug   github   initial   服务   端口   das   80端口   

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)分析

 

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

标签:load   tps   debug   github   initial   服务   端口   das   80端口   

原文地址:https://www.cnblogs.com/Unconscious/p/11258648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!