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

admin 2025年2月22日00:23:44评论15 views字数 3103阅读10分20秒阅读模式

一、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.htmlhttps://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的页面。

Tomcat的Web应用程序应该由如下目录组成:(1) 页面内容等文件的存放位置:*.html, .jsp等可以有许多目录层次,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要的可见部分。除了HTML文件、JSP文件外,还有js(JavaScript)文件和css(样式表)文件以及其他多媒体文件等。(2) Web-INF/web.xml 这是一个Web应用程序的描述文件。这个文件是一个XML文件,描述了Servlet和这个Web应用程序的其他组件信息,此外还包括一些初始化信息和安全约束等等。(3) Web-INF/classes/ 这个目录及其下的子目录应该包括这个Web应用程序的所有JavaBean及Servlet等编译好的Java类文件(.class)文件,以及没有被压缩打入JAR包的其他class文件和相关资源。注意,在这个目录下的Java类应该按照其所属的包层次组织目录(即如果该.class文件具有包的定义,则该.class文件应该放在.WEB-INFclasses包名下)。(4) 通常Web-INF/classes/ 这个目录下的类文件也可以打包成JAR文件,并可以放到WEB-INF下的lib目录下。如将classes目录下的各个*.class文件打包成WebMis.jar文件(jar cvf WebMis.jar .)

参考文章:

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 漏洞复现

1、发现tomcat同时开启ajp
Apache-Tomcat-AJP-文件包含漏洞-CVE-2020-1938
2、运行py脚本检测(或长亭漏洞在线检测)

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

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/

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

• 往期精选

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

GoldenEye 靶场渗透测试

CVE-2020-1472漏洞复现

记一次艰难的SQL注入(过安全狗)

干货|sql注入绕WAF的N种姿势

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

下方点击关注发现更多精彩!

原文始发于微信公众号(银河护卫队super):Apache-Tomcat-AJP-文件包含漏洞-CVE-2020-1938

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月22日00:23:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apache-Tomcat-AJP-文件包含漏洞-CVE-2020-1938http://cn-sec.com/archives/864572.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息