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

Posted 合天智汇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat反序列化漏洞(cve-2016-8735)相关的知识,希望对你有一定的参考价值。

复现起源:

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

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

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

tomcat反序列化漏洞(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


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

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

漏洞所需环境:

ApacheTomcat 8.5.2

Jdk1.7.0_80

安装成功如下图:

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

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


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

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

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


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


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

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

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

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


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

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

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

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

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

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

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

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

漏洞利用:

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

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

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

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

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

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

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

漏洞修复方案:

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

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


本系列文章友情链接




以上是关于tomcat反序列化漏洞(cve-2016-8735)的主要内容,如果未能解决你的问题,请参考以下文章

漏洞风险提示Tomcat Session反序列化代码执行漏洞

漏洞预警:apache tomcat session 反序列化代码执行漏洞

tomcat session漏洞反序列化详解

tomcat session漏洞反序列化详解

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

Tomcat FileStore Session(CVE-2020-9484)持久化反序列化漏洞复现