Tomcat文件包含漏洞的搭建与复现:CVE-2020-1938

漏洞描述

2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp目录下的任意文件,如:webapp 配置文件或源代码等。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。目前,厂商已发布新版本完成漏洞修复。

Apache Tomcat都是Apache开源组织开发的用于处理HTTP服务的免费项目,可以作为独立的Web服务器运行。Tomcat是Apache软件基金会中的一个重要项目,性能稳定且免费,是目前较为流行的Web应用服务器。由于Tomcat应用范围较广,所以本次通告的漏洞影响范围较大,请相关用户及时采取防护措施或者升级补丁修复此漏洞。

影响范围

受影响版本

  • Apache Tomcat 6
  • Apache Tomcat 7 < 7.0.100
  • Apache Tomcat 8 < 8.5.51
  • Apache Tomcat 9 < 9.0.31

不受影响版本

  • Apache Tomcat = 7.0.100
  • Apache Tomcat = 8.5.51
  • Apache Tomcat = 9.0.31

环境搭建

准备工具

漏洞利用

首先成功搭建tomcat环境:
1
本次漏洞利用的是AJP协议,该协议工作在8009端口,查看本机已开启:
2
使用CNVD-2020-10487-Tomcat-Ajp-lfi-master的poc利用成功读取WEB-INF/web.xml文件:
3
该POC读取目录为ROOT,其他目录不行:
4
我们在目录下新建一个test.txt的文档,使用poc成功读取
5
6
上面脚本只支持python2,我们使用AJPy-master的poc同样成功,这个脚本还能对tomcat进行暴力破解,文件上传等
7
可以修改–webapp=manager来指定查看webapp目录下的子目录中文件
8

漏洞防护

官方升级

目前官方已在最新版本中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:

版本号 下载地址
Apache Tomcat 7.0.100 http://tomcat.apache.org/download-70.cgi
Apache Tomcat 8.5.51 http://tomcat.apache.org/download-80.cgi
Apache Tomcat 9.0.31 http://tomcat.apache.org/download-90.cgi

其他安全防护措施

如果相关用户暂时无法进行版本升级,可根据自身情况采用下列防护措施。

关闭AJP

如若用不到Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。

具体操作如下

a. 编辑 <CATALINABASE>/conf/server.xml,找到如下行(<CATALINABASE>Tomcat 的工作目录):`

1
<Connectorport=”8009″protocol=”AJP/1.3″ redirectPort=”8443″/>

b. 然后将其注释掉或者删掉, (以下为注释的方式):

1
<!–<Connectorport=”8009″protocol=”AJP/1.3″redirectPort=”8443″ />–>

c. 保存后重新启动Tomcat,即可生效.

添加认证凭证

如若需要使用AJP协议,可根据当前版本配置协议属性设置认证凭证,主要使用配置AJP配置中的secretRequired跟secret属性来限制认证。

具体操作如下

使用Tomcat 7和Tomcat 9的用户可为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOURTOMCATAJP_SECRET更改为一个安全性高、无法被轻易猜解的值):

1
<Connectorport="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>

使用Tomcat 8的用户可为AJP Connector配置requiredSecret来设置AJP协议的认证凭证。例如(注意必须将YOURTOMCATAJP_SECRET更改为一个安全性高、无法被轻易猜解的值):

1
<Connectorport="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_TOMCAT_AJP_SECRET"/>
文章作者: Ch4ce
文章链接: http://yoursite.com/2020/06/03/Tomcat%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E%E7%9A%84%E6%90%AD%E5%BB%BA%E4%B8%8E%E5%A4%8D%E7%8E%B0%EF%BC%9ACVE-2020-1938/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chaceshadow's Blog