[漏洞复现]Tomcat AJP 文件包含漏洞

本文详细介绍了Tomcat AJP文件包含漏洞(CVE-2020-1938),讨论了Tomcat的功能、Servlet容器概念、AJP协议以及环境搭建过程。通过漏洞复现,展示了文件读取和文件包含的情况,指出该漏洞可能导致的安全风险。
摘要由CSDN通过智能技术生成

Tomcat AJP 文件包含漏洞

cve-2020-1938

攻击者可利用该高危漏洞读取或包含Tomcat上所有 webapp目录下的任意文件

漏洞影响版本:

7.分支7.0.100之前版本,建议更新到7.0.100版本;

8.分支8.5.51之前版本,建议更新到8.5.51版本;

9.分支9.0.31之前版本,建议更新到9.0.31版本。
相关知识点

参考:

java代码审计(入门篇)- 徐焱

https://paper.seebug.org/1147/

https://weread.qq.com/web/reader/c8732a70726fa058c87154bk76d325c028076dc611d6d8c

https://mp.weixin.qq.com/s/D1hiKJpah3NhEBLwtTodsg

https://zhuanlan.zhihu.com/p/137527937

https://blog.csdn.net/lili13897741554/article/details/125868178

Tomcat

Tomcat主要有两大功能,一是充当Web服务器,可以对一切静态资源的请求作出回应;二是充当Servlet容器。常见的Web服务器有 Apache、Nginx、IIS等。常见的Servlet容器有Tomcat、Weblogic、JBOSS等。

Servlet容器可以理解为Web服务器的升级版。主要作用是给上级容器(Tomcat)提供doGet()和doPost()等方法,其生命周期实例化、初始化、调用、销毁受控于Tomcat容器。以Tomcat为例,Tomcat本身可以不作为Servlet容器使用,仅仅充当Web服务器的角色,但是其处理静态资源请求的效率和速度远不及Apache,所以很多情况下生产环境会将Apache作为Web服务器来接收用户的请求。静态资源由Apache直接处理,而Servlet请求则交由Tomcat来进行处理。这种方式使两个中间件各司其职,大大加快了响应速度。

Tomcat默认定义了两个servlet,DefaultServletJspServlet

经过tomcat内部处理流程,一个走 default servlet (DefaultServlet),另一个走 jsp servlet (JspServlet),可导致的不同的漏洞。

文件读取漏洞走的是DefaultServlet,文件包含漏洞走的是JspServlet。

在这里插入图片描述

ajp协议

众所周知,用户的请求是以HTTP协议的形式传递给Web服务器。我们在浏览器中对某个域名或者ip进行访问时,头部都会有http或者https的表示,而AJP浏览器是不支持的,我们无法通过浏览器发送AJP的报文。AJP这个协议并不是提供给用户使用的。

Tomcat$ CATALINA_BASE/conf/web.xml默认配置了两个Connector,分别监听两个不同的端口,一个是HTTP Connector 默认监听8080端口,另一个是AJP Connector 默认监听8009端口。

HTTP Connector主要负责接收来自用户的请求,包括静态请求和动态请求。有了HTTP Connector,Tomcat才能成为一个Web服务器,还可以额外处理Servlet和JSP。

而AJP的使用对象通常是另一个Web服务器,例如Apache,这里以图5-75进行说明。

请添加图片描述

AJP是一个二进制的TCP传输协议。浏览器无法使用AJP,而是首先由Apache与Tomcat进行AJP的通信,然后由Apache通过proxy_ajp模块进行反向代理,将其转换成HTTP服务器再暴露给用户,允许用户进行访问。这样做的原因是,相对于HTTP纯文本协议来说,效率和性能更高,同时也做了很多优化。

在conf/server.xml中配置。

请添加图片描述

环境搭建

本地搭建一个tomcat, 因为远程调试的话 docker在虚拟机里,暂时不知道咋搞。

官网:https://tomcat.apache.org/

这里要下载旧版本的tomcat,选择Archives(档案),这里选择tomcat8.5.51之前的版本,

请添加图片描述

下载src源码

请添加图片描述

在源码根目录新建一个pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值