Tomcat一些漏洞的汇总

Posted 码啊码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat一些漏洞的汇总相关的知识,希望对你有一定的参考价值。

前言:Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用 服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

目录

一、Tomcat 任意文件写入(CVE-2017-12615)

1.漏洞介绍

1.1影响范围:

1.2漏洞原理:

2.漏洞复现

3.修复建议

二、Tomcat 远程代码执行(CVE-2019-0232)

1.漏洞介绍

1.1影响版本

1.2漏洞利用条件

1.3漏洞原理

2.漏洞复现

3.修复建议

三、Tomcat session反序列化(CVE-2020-9484)

 1.漏洞介绍

1.1影响版本:

1.2漏洞利用条件:

1.3漏洞原理:

2.漏洞复现

3.修复建议

四、Tomcat 弱口令 && 后台getshell

1.漏洞介绍

1.1影响版本

1.2漏洞条件

1.3漏洞原理

2.漏洞复现

3.修复建议

一、Tomcat 任意文件写入(CVE-2017-12615)

1.漏洞介绍

1.1影响范围:

Apache Tomcat 7.0.0 - 7.0.81

1.2漏洞原理:

Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致可以使用PUT方法上传任意文件,攻击者将精心构造的payload向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行

2.漏洞复现

使用vulfocus提供的靶场

抓包修改请求包方法为PUT,通过PUT方法上传文件,注意PUT与文件名之间要有空格,文件内容通过POST提交

我们直接上传jsp文件会报404错误,估计是服务器有校验,因此我们需要绕过

方法一:使用斜杠/,斜杠在文件名中是非法的,所以会被去除(Linux和Windows中都适用)

PUT /shell.jsp/ HTTP/1.1

加'/'是为了绕过jsp文件的限制,斜杠在文件名中是非法的,所以会被去除(Linux和Windows都适用)

方法二:使用空格%20 (在Windows中适用)

在Windows下不允许文件以空格结尾,因此上传到windows会被自动去掉末尾空格

PUT /shell.jsp%20 HTTP/1.1

方法三:使用NTFS流(在Windows中适用的)

PUT /x.jsp::$DATA HTTP/1.1

 访问上传的文件获取flag

3.修复建议

 1、配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat
注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。
2、根据官方补丁升级最新版本

二、Tomcat 远程代码执行(CVE-2019-0232)

1.漏洞介绍

1.1影响版本

Apache Tomcat 9.0.0.M1 to 9.0.17

Apache Tomcat 8.5.0 to 8.5.39

Apache Tomcat 7.0.0 to 7.0.93

1.2漏洞利用条件

1.系统为Windows
2. 启用了CGI Servlet(默认为关闭)
3. 启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)

1.3漏洞原理

由于使用enableCmdLineArguments在Windows上运行时,远程执行代码漏洞(CVE-2019-0232)驻留在公共网关接口(CGI)Servlet中,java运行时环境(JRE)将命令行参数传递给Windows的方式存在缺陷导致

2.漏洞复现

参考:

https://www.cnblogs.com/liliyuanshangcao/p/10731966.html

3.修复建议

1.禁用enableCmdLineArguments参数。
2.在conf/web.xml中覆写采用更严格的参数合法性检验规则。
3.升级tomcat到9.0.17以上版本。

三、Tomcat session反序列化(CVE-2020-9484)

 1.漏洞介绍

1.1影响版本:

10.0.0-M1至10.0.0-M4

9.0.0.0.M1至9.0.34

8.5.0至8.5.54

7.0.0至7.0.103

1.2漏洞利用条件:

1.攻击者能够控制服务器上文件的内容和文件名称; 
2.服务器PersistenceManager配置中使用了FileStore; 
3.PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象; 
4.攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径

1.3漏洞原理:

当使用tomcat时,如果使用了tomcat提供的session持久化功能,就会在一次会话中尝试读取session文件中的内容,并进行反序列化。

2.漏洞复现

参考:

Tomcat Session(CVE-2020-9484)反序列化漏洞复现 - FreeBuf网络安全行业门户

3.修复建议

1.检查是否使用tomcat的session持久化功能,如果有,建议关闭
2.检查项目中文件上传功能是否存在任意上传,这里任意上传指的是可以上传非jsp文件且可以控制上传文件名后缀为session
3.升级tomcat至最新版本

四、Tomcat 弱口令 && 后台getshell

1.漏洞介绍

1.1影响版本

所有版本

1.2漏洞条件

Tomcat7+权限分为:

  • manager(后台管理)
    • manager-gui 拥有html页面权限
    • manager-status 拥有查看status的权限
    • manager-script 拥有text接口的权限,和status权限
    • manager-jmx 拥有jmx权限,和status权限
  • host-manager(虚拟主机管理)
    • admin-gui 拥有html页面权限
    • admin-script 拥有text接口权限

这些权限的究竟有什么作用,详情阅读 Apache Tomcat 8 (8.5.77) - Manager App How-To

用户tomcat拥有上述所有权限,密码是tomcat;正常安装的情况下,tomcat中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。

1.3漏洞原理

通过弱口令进入后台后,在后台部署war文件,可以直接将webshell部署到web目录下

2.漏洞复现

参考链接:

16.Tomcat弱口令 && 后台getshell漏洞 - bmjoker - 博客园

3.修复建议

1、在系统上以低权限运行Tomcat应用程序。创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。

2、增加对于本地和基于证书的身份验证,部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。

3、针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。

以上是关于Tomcat一些漏洞的汇总的主要内容,如果未能解决你的问题,请参考以下文章

关于tomcat不安全的http方法漏洞的处理方法

Tomcat样例安全漏洞

Java安全之Axis漏洞分析

Tomcat幽灵猫任意文件读取漏洞复现

Apache Tomcat请求对象安全绕过漏洞

记一次web系统漏洞整改过程(nginx+Tomcat)