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

漏洞所需环境:

ApacheTomcat 8.5.2

Jdk1.7.0_80

安装成功如下图:

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

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

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

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

 

 

主要配置的意思是设置启动tomcat的相关配置,不开启远程监听jvm信息。设置不启用他的ssl链接和不使用监控的账户。具体的配置可以去了解一下利用tomcat的jmx监控。至此所有的配置成功保存后,我们运行tomcat。

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

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

 

 

漏洞利用:

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

 

 

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

访问 文件,反弹shell。 

 

漏洞修复:

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

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

猜你喜欢

转载自blog.csdn.net/qq_48985780/article/details/121418420