Tomcat 漏洞

admin 2022年1月6日01:26:41评论107 views字数 2942阅读9分48秒阅读模式

Tomcat相关知识点学习

Tomcat PUT任意文件上传(CVE-2017-12615)

当存在漏洞的Tomcat 启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。

影响范围:Apache Tomcat 5.x 到 9.x

Tomcat设置写权限(只读的= false),导致的结果我们可以写文件到服务器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

虽然Tomcat检查文件后缀在某种程度上(不能直接编写jsp),我们仍然可以绕过限制通过文件系统的一些特性(例如使用/ Linux和window,使用%20、::$DATA window)

漏洞复现:
启动vulhub环境,利用 PUT 请求创建文件:
Tomcat 漏洞
提示404,JspServlet负责处理所有JSP和JPSX类型的动态请求,不能够处理PUT方法类型的请求。

利用系统特性绕过

漏洞分析:

Tomcat 远程代码执行漏洞分析

tomcat7后台war部署上传shell

Tomcat支持在后台部署 war 文件,可以直接将 webshell 部署到 web 目录下。其中,欲访问后台,需要对应用户有相应权限。

Tomcat7+权限分为:

1
2
3
4
5
6
7
8
manager(后台管理)
manager-gui 拥有html页面权限
manager-status 拥有查看status的权限
manager-script 拥有text接口的权限,和status权限
manager-jmx 拥有jmx权限,和status权限
host-manager(虚拟主机管理)
admin-gui 拥有html页面权限
admin-script 拥有text接口权限

在conf/tomcat-users.xml文件中配置用户的权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />

</tomcat-users>

tomcat8中默认没有任何用户,且manager页面只允许本地IP访问

漏洞复现:

用户名密码:tomcat:tomcat

getshell

Tomcat AJP 文件包含漏洞(CVE-2020-1938)

Ghostcat(幽灵猫) 是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

Tomcat根据默认配置(conf/server.xml)启动两个连接器。一个是HTTP Connector默认监听8080端口处理HTTP请求,一个AJP connector默认8009端口处理AJP请求。Tomcat处理两个协议请求区别并不大,AJP协议相当于HTTP协议的二进制优化版。

本次漏洞出现在通过设置AJP请求属性,可控制AJP连接器封装的request对象的属性,最终导致文件包含可以任意文件读取和代码执行。

受影响版本

1
2
3
4
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31

利用工具:
CNVD-2020-10487-Tomcat-Ajp-lfi

1
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 目的ip -p 8009 -f /WEB-INF/web.xml

工具二:https://github.com/0nise/CVE-2020-1938

漏洞分析:

tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性
Tomcat 漏洞
因此可以通过此种特性从而可以控制request对象的下面三个Attribute属性

1
2
3
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path

详情可看:

Tomcat-Ajp协议漏洞分析
CVE-2020-1938:Tomcat AJP协议文件包含漏洞分析

Apache Tomcat Websocket DoS(CVE-2020-13935 )

详情可看:
CVE-2020-13935 Apache Tomcat Websocket DoS 漏洞分析

FROM :blog.cfyqy.com | Author:cfyqy

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日01:26:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Tomcat 漏洞https://cn-sec.com/archives/721522.html

发表评论

匿名网友 填写信息