tomcat反序列化漏洞(cve-2016-8735)

复现起源:

近期在项目中碰到的ApacheTomcat中间件愈来愈多,于是乎。想着做一个整理。将ApacheTomcat中间件的几大较为重要的高危漏洞做一个总结整理复现。用作来巩固更新自己的知识库。

在这里感谢公司Bearcat师傅和残忆师傅以及李师傅等指导和共享精神。

今天我们来一起复现一下Tomcat多版本远程代码执行CVE-2016-8735。复现之前我们先来了解一下CVE-2016-8735。

漏洞描述:

该漏洞与之前Oracle发布的mxRemoteLifecycleListener反序列化漏洞(CVE-2016-3427)相关,是由于使用了JmxRemoteLifecycleListener的监听功能所导致。而在Oracle官方发布修复后,Tomcat未能及时修复更新而导致的远程代码执行。

该漏洞所造成的最根本原因是Tomcat在配置JMX做监控时使用了JmxRemoteLifecycleListener的方法。

漏洞影响版本:

ApacheTomcat 9.0.0.M1 到9.0.0.M11

ApacheTomcat 8.5.0 到8.5.6

ApacheTomcat 8.0.0.RC1 到8.0.38

ApacheTomcat 7.0.0 到7.0.72

ApacheTomcat 6.0.0 到6.0.47

漏洞利用条件:

外部需要开启JmxRemoteLifecycleListener监听的10001和10002端口,来实现远程代码执行。

漏洞复现:

所需环境工具包:

catalina-jmx-remote.jar:

https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.2/bin/extras/catalina-jmx-remote.jar

groovy-2.3.9.jar:

http://central.maven.org/maven2/org/codehaus/groovy/groovy/2.3.9/groovy-2.3.9.jar

ysoserial.jar:

https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar

了解完漏洞详情之后,我们开始着手搭建环境来复现漏洞更深入的理解。

漏洞所需环境:

ApacheTomcat 8.5.2

Jdk1.7.0_80

安装成功如下图:

tomcat反序列化漏洞(cve-2016-8735)_第1张图片

在进行漏洞复现之前我们需要配置几点如下:

conf/server.xml中第30行中配置启用JmxRemoteLifecycleListener功能监听的端口:

tomcat反序列化漏洞(cve-2016-8735)_第2张图片

配置好jmx的端口后,我们在tomcat版本所对应的extras/目录下来下载catalina-jmx-remote.jar以及下载groovy-2.3.9.jar两个jar包。下载完成后放至在lib目录下。

接着我们再去bin目录下修改catalina.bat脚本。在ExecuteThe Requested Command注释前面添加这么一行。

tomcat反序列化漏洞(cve-2016-8735)_第3张图片

tomcat反序列化漏洞(cve-2016-8735)_第4张图片

主要配置的意思是设置启动tomcat的相关配置,不开启远程监听jvm信息。设置不启用他的ssl链接和不使用监控的账户。具体的配置可以去了解一下利用tomcat的jmx监控。

至此所有的配置成功保存后,我们运行tomcat。

顺带监听本地的10001和10002的RMI服务端口是否成功运行。

tomcat反序列化漏洞(cve-2016-8735)_第5张图片

监听成功,我们开始来构造Payload执行命令。首先老套路弹个计算器。

tomcat反序列化漏洞(cve-2016-8735)_第6张图片

tomcat反序列化漏洞(cve-2016-8735)_第7张图片

漏洞利用:

一般我们可以利用该漏洞往tomcat的webapp程序目录下写一个文本文件去证明该漏洞存在。

tomcat反序列化漏洞(cve-2016-8735)_第8张图片

tomcat反序列化漏洞(cve-2016-8735)_第9张图片

以及可以直接向服务器上利用wget/copy等命令上传木马来进行获取webshell提权等。

tomcat反序列化漏洞(cve-2016-8735)_第10张图片

tomcat反序列化漏洞(cve-2016-8735)_第11张图片

漏洞修复方案:

1、关闭JmxRemoteLifecycleListener功能,或者是对jmx JmxRemoteLifecycleListener远程端口进行网络访问控制。同时,增加严格的认证方式。

2、根据官方去升级更新相对应的版本。

本系列文章友情链接

Tomcat的PUT的上传漏洞(CVE-2017-12615)

Tomcat后台弱口令上传war包漏洞复现

你可能感兴趣的:(tomcat反序列化漏洞(cve-2016-8735))