tomcat http转https_Tomcat爆出高危漏洞(转载)

0x01 漏洞背景

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

Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照SunMicrosystems提供的技术规范,实现了对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

ApacheTomcat服务器通过Connector连接器组件与客户程序建立连接Connector表示接收请求并返回响应的端点。即Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。在ApacheTomcat服务器中我们平时用的最多的8080端口,就是所谓的HttpConnector,使用Http(HTTP/1.1)协议。

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

3b327981fa155222b99815ad0e9acf55.png

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

Ajp协议对应的配置为

bd72bc6bb64c3690cdee4b47745fd587.png

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

d0b779c4abab68054d1392ed617398bc.png

3.2 代码分析

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

cd06d0e3f51de0fc4419d5fb6c36ab8e.png

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

2c61d4161cbd1e2a9e7ee2d2e2ab4ebb.png

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

0804da9f72a4dc94796df6a78346ef4c.png

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

0b7c74fc900d70942a38e3ef696fa526.png

3.3 任意文件读取

64d72d97a521b3265f56d5eecd7c34fd.png

当请求被分发到

org.apache.catalina.servlets.DefaultServlet#serveResource()方法

bae7a6b24a00ec56ec044203bceb1967.png

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

d93be03d2ccc4ec9a9ca0ab5434e8189.png

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

754233164864464690eb5f5c3e0ac2af.png

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

230c544072325d9212c3813f6cb41c8a.png

3.4 命令执行

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

b72d13557875afe864ea9d132948ed0c.png

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

6953c37e6d58ec59352b78f2756ac39d.png

漏洞演示:造成rce

3f815a785dc780c3843d980b0bdc22e5.png

0x04 修复建议

更新到如下Tomcat 版本

Tomcat 分支版本号
Tomcat 77.0.0100
Tomcat 88.5.51
Tomcat 99.0.31

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

下载链接如下:

7.0.100版本https://tomcat.apache.org/download-70.cgi
8.5.51版本https://tomcat.apache.org/download-80.cgi
9.0.31版本

https://tomcat.apache.org/download-90.cgi

作者:Hu3sky
www.anquanke.com/post/id/199448

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值