CVE-2020-1938 : Tomcat-Ajp 协议漏洞分析

admin 2022-06-25 19:02:22 AnQuanKeINFO 来源:ZONE.CI 全球网 0 阅读模式

 

作者:Hu3sky@360CERT

0x01 漏洞背景

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

Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(jsP)的支持。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。

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

 

0x02 影响版本

  • 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

 

0x03 漏洞分析

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服务器的两种方式:

public_image

3.2 代码分析

漏洞产生的主要位置在处理Ajp请求内容的地方org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest()

public_image

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

public_image

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

public_image

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

javax.servlet.include.request_uri

javax.servlet.include.path_info

javax.servlet.include.servlet_path

3.3 任意文件读取

public_image

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

public_image

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

public_image

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

public_image

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

public_image

3.4 命令执行

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

public_image

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

public_image

漏洞演示: 造成rce

public_image

 

0x04 修复建议

更新到如下Tomcat 版本

Tomcat 分支 版本号
Tomcat 7 7.0.0100
Tomcat 8 8.5.51
Tomcat 9 9.0.31

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

请广大用户时刻关注 Apache Tomcat® – Welcome! 获取最新的 Tomcat Release版本,以及 apache/tomcat: Apache Tomcat 获取最新的 git 版本。

 

0x05 相关空间测绘数据

360安全大脑-Quake网络空间测绘系统通过对全网资产测绘,发现 Apache Tomcat 在国内存在大范围的使用情况。具体分布如下图所示。

public_image

 

0x06 产品侧解决方案

6.1 360城市级网络安全监测服务

360安全大脑的QUAKE资产测绘平台通过资产测绘技术手段,对该类 漏洞/事件 进行监测,请用户联系相关产品区域负责人获取对应产品。

6.2 360AISA全流量威胁分析系统

360AISA基于360海量安全大数据和实战经验训练的模型,进行全流量威胁检测,实现实时精准攻击告警,还原攻击链。 目前产品具备该漏洞/攻击的实时检测能力。

 

0x07 时间线

2020-02-21 360-CERT 发布分析报告

weinxin
特别声明
本站(ZONE.CI)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
记一奇葩弱口令到内网实战 AnQuanKeINFO

记一奇葩弱口令到内网实战

一、前期打点拿到目标后首先要做的就是信息收集,这次给的目标就给个单位名称,通过互联网上搜索发现其网站在阿里云上着实无奈,在这里推荐个寻找资产的方法,利用ICP/IP地址/域名信息备
MITRE漏洞公告意外展示易受攻击资产 AnQuanKeINFO

MITRE漏洞公告意外展示易受攻击资产

第317期你好呀~欢迎来到“安全头条”!如果你是第一次光顾,可以先阅读站内公告了解我们哦。欢迎各位新老顾客前来拜访,在文章底部时常交流、疯狂讨论,都是小安欢迎哒~如果对本小站的内容
浅识k8s中的准入控制器 AnQuanKeINFO

浅识k8s中的准入控制器

背景在 k8s中各组件和kube apiserver通信时的认证和鉴权 中提到”NodeRestriction准入插件”,实际上它是一个”准入控制器”。“准入控制器”是一个重要的概
评论:0   参与:  0