tomcatCNVD10487漏洞处理
Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。
CNVD-2020-10487是文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。
问题来源
ajp13是一个二进制的TCP传输协议,相比HTTP这种纯文本的协议来说,效率和性能更高,也做了很多优化,但是,浏览器并不能直接支持AJP13协议,只支持HTTP协议,通过Apache的proxy_ajp模块进行反向代理,暴露成http协议给客户端访问。其他支持AJP协议的代理服务器当然也可以用这种做法。但是实际情况是,支持AJP代理的服务器非常少,比如目前很火爆的Nginx就没这个模块。因此tomcat的配置大部分都是关闭AJP协议端口的,因为除了Apache之外别的http server几乎都不能反代AJP13协议,自然就没太大用处了。
问题处理
升级版本
Tomcat 7
7.0.0100
Tomcat 8
8.5.51
Tomcat 9
9.0.31
1 如果你的服务是 放在tomcat (外网)的webapp目录下 ,那么你需要升级
2 如果你的服务是 apache+tomcat (内网),并且服务在tomcat的webapp目录下,那么你需要升级
3 如果你的服务是 nginx + tomcat(内网) ,那你貌似不需要担心,因为nginx,不支持ajp
3 如果你的服务 springboot ,直接对外,那你也不需要升级因为
如图所示,springboot 微服务 默认使用 http请求,没有使用ajp,二者是if else的关系。
攻击方式
这个是重点,有漏洞必须自己能够攻击才能验证自己有没有修复好
攻击代码地址
https://github.com/threedr3am/learnjavabug/blob/master/tomcat/ajp-bug/src/main/java/com/threedr3am/bug/tomcat/ajp/FileRead.java
端口是ajp服务的端口,如何查看呢
文件位置: apache-tomcat-8.5.32confserver.xml
注意内容:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
攻击 单独启动tomcat的服务 的http端口,默认8080,无效,
攻击tomcat服务的ajp端口,默认 8009 ,拿到文件了 。
也可以攻击一下自己的springboot微服务,看看自己服务有么有问题,我就是这么干的
攻击ajp端口,无效,预料之中
攻击http端口,报错
这也说明,如果你的服务有这个报错,那就是有人攻击你 ,需要注意了
需要连接
https://www.cnvd.org.cn/flaw/show/CNVD-2020-10487
https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html
以上是 tomcatCNVD10487漏洞处理 的全部内容, 来源链接: utcz.com/z/513685.html