1.Tomcat Session(CVE-2020-9484)反序列化复现
2.Apache Tomcat 反序列化代码执行漏洞复现(CVE-2020-9484)
Tomcat Session(CVE-2020-9484)反序列化复现
Apache Tomcat远程代码执行风险剖析
Apache Tomcat,一个开放源代码的Web应用服务器,主要实现Java EE规范中的Servlet、JSP,并提供HTTP服务,是java飞机源码广泛使用的Java Web容器。在年,由Sun Microsystems开发并在年捐献给ASF(Apache Software Foundation),现独立为顶级项目。Tomcat为中小规模系统和低并发访问提供高效服务,适合初学者开发和调试JSP程序。它作为Apache服务器的kettle 6.0源码编译扩展运行独立进程,具备轻量级应用服务器特性。
CVE--:Tomcat反序列化漏洞
年5月日,Apache官方宣布了Tomcat远程代码执行风险,漏洞编号CVE--。此漏洞存在于Tomcat使用内置session同步功能时,若配置不当(未使用EncryptInterceptor),攻击者通过精心构造数据包,可对使用内置session同步的Tomcat服务器发起攻击。
成功利用此漏洞需满足四条件:攻击者能够控制服务器文件内容与名称;服务器使用FileStore进行持久化;sessionAttributeValueClassNameFilter配置不当,允许攻击者提供反序列化对象;攻击者知道FileStore存储位置与攻击可控文件相对路径。
影响版本
Apache Tomcat版本包括:.0.0-M1至.0.0-M4,AOSP4.2.2源码9.0.0.M1至9.0.,8.5.0至8.5.,以及7.0.0至7.0.。
源码分析
根据配置,对Tomcat源码进行分析。以Tomcat .0.0-M4为例,关注FileStore的load方法,此方法首先将session id转换为file object并检查文件是否存在。若存在,则读取文件内容。文件对象会添加'.session'后缀,myeclipse导入源码包但未验证目录路径。当文件存在时,系统运行CustomObjectInputStream获取gadget类,进行反序列化操作。
环境搭建
安装Tomcat需Java8环境,具体安装教程可见相关链接。下载Tomcat .0.0-M4,创建tomcat目录,解压文件。在conf目录下编辑context.xml文件添加Manager配置。下载groovy-2.3.9.jar,手机gps定位源码放入lib目录下。执行wget命令下载依赖,运行catalina.sh启动Tomcat。访问ip:,确认安装成功。
漏洞复现
使用ysoserial生成Java反序列化payload,执行java命令生成payload文件。在浏览器中添加Cookie,包含攻击性JSESSIONID值。或直接通过curl命令加载恶意session持久化文件。执行ls /tmp查看结果。
修复方法
通过升级Tomcat版本、配置WAF过滤器、或避免使用FileStore来修复此漏洞。
免责申明
本项目仅用于安全人员完成授权项目测试与学习交流,不涉及漏洞利用与攻击性行为。使用时请遵守当地法律法规,避免非授权测试。
Apache Tomcat 反序列化代码执行漏洞复现(CVE--)
Apache Tomcat的CVE--远程代码执行漏洞概述,漏洞的详细信息与影响范围如下。 Apache Tomcat是一个开放源代码的Java Web应用容器,该漏洞存在于使用了自带session同步功能,而没有正确使用EncryptInterceptor配置的场景中。攻击者利用精心构造的数据包,可以对部署了Tomcat且具有特定配置的服务器进行攻击。 成功利用此漏洞需要满足以下四个条件:攻击者能够控制服务器上的文件内容和文件名。
服务器配置了PersistenceManager使用了FileStore。
PersistenceManager的sessionAttributeValueClassNameFilter配置为“null”或者过滤机制不严格,允许攻击者提供恶意反序列化的对象。
攻击者知道FileStore存储位置到攻击者可控文件的相对路径。
该漏洞的威胁等级为中危,主要影响版本在CVE--漏洞公告覆盖的范围内。 漏洞复现实验可以在本地环境或Docker容器中进行。本地环境搭建步骤:
设置server.xml文件参数,如debug、saveOnRestart、maxActiveSession等,然后部署一个依赖commons-collections4的web应用到Tomcat中。Docker环境搭建步骤:
克隆相关代码,构建Docker镜像,运行Docker容器,并通过特定端口访问容器内的Tomcat服务。 验证漏洞的存在,可以通过以下步骤:使用ysoserial工具生成恶意序列化数据,利用文件上传功能将数据上传到服务器。
发起恶意请求,携带恶意数据。
漏洞检测方法包括:检查安装的Apache Tomcat版本,确认是否受影响。
检查配置文件(如context.xml或server.xml)中是否存在FileStore配置。
修复建议包括:使用最新版本的Apache Tomcat,官方已修复该漏洞。
禁用或正确配置FileStore的使用,避免使用不安全的反序列化过滤机制。
华云安安全威胁管理平台提供了一套自动化漏洞挖掘与利用能力,帮助客户实现持续的风险检测和威胁防御。 “以攻促防,攻防兼备”的理念贯穿华云安的产品与服务,通过一流的安全攻防团队和网络安全产品,服务于关键信息基础设施行业,构建全面的网络安全保障体系。