Tomcat-Ajp协议漏洞分析

发布时间:2021-11-03 18:14:12 作者:iii
来源:亿速云 阅读:322

这篇文章主要讲解了“Tomcat-Ajp协议漏洞分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Tomcat-Ajp协议漏洞分析”吧!

漏洞背景

安全公告编号:CNTA-2020-0004

2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞。

CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,xxx者可利用该高危漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等。

受影响的版本包括:Tomcat 6,Tomcat 7的7.0.100以下版本,Tomcat 8的8.5.51以下版本,Tomcat 9的9.0.31以下版本。

CNVD 对该漏洞的综合评级为“高危”。

影响版本

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

漏洞分析

3.1 AJP Connector

Apache Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector表示接收请求并返回响应的端点。即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。

在Apache Tomcat服务器中我们平时用的最多的8080端口,就是所谓的Http Connector,使用Http(HTTP/1.1)协议

在conf/server.xml文件里,它对应的配置为:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

而 AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本,它能降低 HTTP 请求的处理成本,因此主要在需要集群、反向代理的场景被使用。

Ajp协议对应的配置为:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Tomcat服务器默认对外网开启该端口 Web客户访问Tomcat服务器的两种方式:

Tomcat-Ajp协议漏洞分析

3.2 代码分析

漏洞产生的主要位置在处理Ajp请求内容的地方

org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest()

Tomcat-Ajp协议漏洞分析

这里首先判断SCAREQ_ATTRIBUTE,意思是如果使用的Ajp属性并不在上述的列表中,那么就进入这个条件

Tomcat-Ajp协议漏洞分析

SC_A_REQ_REMOTE_PORT对应的是AJP_REMOTE_PORT,这里指的是对远程端口的转发,Ajp13并没有转发远程端口,但是接受转发的数据作为远程端口。

Tomcat-Ajp协议漏洞分析

于是这里我们可以进行对Ajp设置特定的属性,封装为request对象的Attribute属性 比如以下三个属性可以被设置

javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path

3.3 任意文件读取

Tomcat-Ajp协议漏洞分析

当请求被分发到org.apache.catalina.servlets.DefaultServlet#serveResource()方法

Tomcat-Ajp协议漏洞分析

调用getRelativePath方法,需要获取到request_uri不为null,然后从request对象中获取并设置pathInfo属性值和servletPath属性值

Tomcat-Ajp协议漏洞分析

接着往下看到getResource方法时,会把path作为参数传入,获取到文件的源码

Tomcat-Ajp协议漏洞分析

漏洞演示: 读取到/WEB-INF/web.xml文件

Tomcat-Ajp协议漏洞分析

3.4 命令执行

当在处理 jsp 请求的uri时,会调用 org.apache.jasper.servlet.JspServlet#service()

Tomcat-Ajp协议漏洞分析

最后会将pathinfo交给serviceJspFile处理,以jsp解析该文件,所以当我们可以控制服务器上的jsp文件的时候,比如存在jsp的文件上传,这时,就能够造成rce

Tomcat-Ajp协议漏洞分析

漏洞演示: 造成rce

Tomcat-Ajp协议漏洞分析

修复建议

Apache Tomcat 6 已经停止维护,请升级到最新受支持的 Tomcat 版本以免遭受漏洞影响,请更新到如下Tomcat 版本:

Tomcat-Ajp协议漏洞分析

感谢各位的阅读,以上就是“Tomcat-Ajp协议漏洞分析”的内容了,经过本文的学习后,相信大家对Tomcat-Ajp协议漏洞分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. XSS漏洞分析
  2. CSRF漏洞分析利用及防御

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:Web网络安全分析Base64注入攻击原理

下一篇:使用Xfce Linux桌面环境的8个理由分别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》