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 分支

版本号

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

回到顶部