一、Tomcat简介
1.什么是Tomcat
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。可以这样认为,当在一台机器上配置好 Apache服务器,可利用它响应HTML页面的访问请求。实际上 Tomcat是 Apache服务器的扩展,但运行时它是独立运行的,所以当运行 tomcat时,它实际上作为一个与 Apache独立的进程单独运行的。
2.Tomcat工作流程
在收到请求后,Tomcat的处理流程如下:
-
客户端访问Web服务器,发送HTTP请求
-
Web服务器接收到请求后,传递给Servlet容器
-
Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象
-
Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理
-
Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器
Tomcat服务器是由一系列可配置的组件构成的,其中核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。
参考文章:
https://websec.readthedocs.io/zh/latest/language/java/container.html
https://blog.csdn.net/lz233333/article/details/68065749
3.Tomcat目录结构
一级目录 bin ——Tomcat执行脚本目录 conf ——Tomcat配置文件 lib ——Tomcat运行需要的库文件(JARS) logs ——Tomcat执行时的LOG文件 temp ——Tomcat临时文件存放目录 webapps ——Tomcat的主要Web发布目录(存放我们自己的JSP,SERVLET,类) work ——Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里。
二级目录(仅列出一级目录下几个重要的文件) (1) bin目录下的文件 catalina.sh 用于启动和关闭tomcat服务器 configtest.sh 用于检查配置文件 startup.sh 启动Tomcat脚本 shutdown.sh 关闭Tomcat脚本 (2) conf目录下的文件 server.xml Tomcat 的全局配置文件 web.xml 为不同的Tomcat配置的web应用设置缺省值的文件 tomcat-users.xml Tomcat用户认证的配置文件 (3) lib目录下的文件 包含被Tomcat使用的各种各样的jar文件。 (4) logs目录下的文件 localhost_access_log.2013-09-18.txt 访问日志 localhost.2013-09-18.log 错误和其它日志 manager.2013-09-18.log 管理日志 catalina.2013-09-18.log Tomcat启动或关闭日志文件 (5) webapps目录下的文件 含Web应用的程序(JSP、Servlet和JavaBean等) (6) work目录下的文件 由Tomcat自动生成,这是Tomcat放置它运行期间的中间(intermediate)文件(诸如编译的JSP文件)地方。如果当Tomcat运行时,你删除了这个目录那么将不能够执行包含JSP的页面。
参考文章:
https://www.jianshu.com/p/81ec9c51435e
二、Apache Tomcat AJP 文件包含漏洞
0x1 漏洞概述
由于Tomcat
在处理AJP
请求时,未对请求做任何验证,通过设置AJP
连接器封装的request
对象的属性, 导致产生任意文件读取漏洞和代码执行漏洞
CVE-2020-1938 又名GhostCat, 之前引起了一场风雨,由e长亭科技安全研究员发现的存在于Tomcat中的安全漏洞,由于Tomcat AJP协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
0x2 影响范围
Apache Tomcat 9.x < 9.0.31
Apache Tomcat 8.x < 8.5.51
Apache Tomcat 7.x < 7.0.100
Apache Tomcat 6.x
0x3 漏洞复现
0x4 漏洞修复
1.将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复。
2.禁用AJP协议
-
具体方法:编辑 /conf/server.xml,找到如下行:
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
3.配置secret来设置AJP协议的认证凭证。
-
例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port="8009"protocol="AJP/1.3"
redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"
secret="YOUR_TOMCAT_AJP_SECRET"/>
0x5 参考文章
https://yinwc.github.io/2020/03/01/CVE-2020-1938/
• 往期精选
下方点击关注发现更多精彩!
原文始发于微信公众号(银河护卫队super):Apache-Tomcat-AJP-文件包含漏洞-CVE-2020-1938
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论