java内存漏洞_JavaMelody组件XXE漏洞(CVE-2018-15531)漏洞分析报告

本文详细分析了JavaWeb监控工具JavaMelody中的CVE-2018-15531 XXE漏洞,描述了漏洞背景、实验环境设置、漏洞调试过程及修复方案。通过调试发现,当contentType为特定类型时,会触发XML解析,从而引发XXE。修复关键在于禁用DTD和外部实体。
摘要由CSDN通过智能技术生成

0x001 背景

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

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

0x002 实验环境

首先需要安装JavaMelody组件,

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

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

0x003 调试分析

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

b51bf1be157deecf9b6e2a0039df883d.png

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

53ca6556730620aede63d07638e5fb1b.png

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

漏洞修复的commit地址如下:

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

2771b007ab81b5f12002587ff924e287.png

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

96c6a887e87859854e98e44fa86a4f5d.png

debug模式运行。

217d199fa1804bcbcc792933cfdfa427.png

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

717b1e30ca0c08fddfdc88c4b3de9e92.png

右键打开调用层次结构。

e933fcfc9cbebd8208a756e4d71296d6.png

8062f1f1b8d9374a8f165cddcba136f7.png

我们可以看到调用链。

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

bc2291149a58734ac795e11d0deea05f.png

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

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

61a4446714e24a789ba4d85ee2a8a5e5.png

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

b7412f4875ec8c93546e962257b8d50a.png

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

aed62ae731b1d18637e26565ea0ff7f2.png

据此,编写自动验证poc。

9475ed1da4e685f6018e22f70858fa9c.png

0x004 修复方案

禁用DTD和外部实体引用。

参考官方补丁:

ea6a359195cf2a3a7a14fe1f226d7fe7.png

0x005 参考文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值