上一篇 <<<站在微服务架构对Tomcat进行性能调优
下一篇 >>>DNS域名解析过程
Tomcat服务器默认对外网开启该端口 Web客户访问Tomcat服务器的两种方式:
AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本,它能降低 HTTP 请求的处理成本,因此主要在需要集群、反向代理的场景被使用。
漏洞产生
漏洞产生的主要位置在处理Ajp请求内容的地方
org.apache.coyote.ajp.AbstractAjpProcessor.java#prepareRequest()
对Ajp设置特定的属性,封装为request对象的Attribute属性然后继续走servlet的映射流程。 比如以下三个属性可以被设置
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path
攻击方式
a、利用DefaultServlet实现任意文件下载:当url请求未在映射的url列表里面则会通过tomcat默认的DefaultServlet会根据上面的三个属性来读取到/WEB-INF下面的所有敏感文件,不限于class、xml、jar等文件。
b、通过jspservlet实现任意后缀文件包含:当url(比如http://xxx/xxx/xxx.jsp)请求映射在org.apache.jasper.servlet.JspServlet这个servlet的时候也可通过上述三个属性来控制访问的jsp文件,控制路径之后就可以以jsp解析该文件,所以只需要一个可控文件内容的文件即可实现rce.
解决方案
a、临时禁用AJP协议端口,在conf/server.xml配置文件中注释掉<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
b、配置ajp配置中的secretRequired跟secret属性来限制认证
c、官方下载最新版下载地址
推荐阅读:
<<<Tomcat的底层架构模型
<<<Tomcat启动流程说明
<<<Tomcat8的四种部署方式
<<<站在微服务架构对Tomcat进行性能调优
网友评论