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环境:



本次漏洞利用的是AJP协议,该协议工作在8009端口,查看本机已开启:



使用CNVD-2020-10487-Tomcat-Ajp-lfi-master的poc利用成功读取WEB-INF/web.xml文件:



该POC读取目录为ROOT,其他目录不行:



我们在目录下新建一个test.txt的文档,使用poc成功读取





上面脚本只支持python2,我们使用AJPy-master的poc同样成功,这个脚本还能对tomcat进行暴力破解,文件上传等



可以修改--webapp=manager来指定查看webapp目录下的子目录中文件

漏洞防护

官方升级

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

版本号 下载地址
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 的工作目录):`

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

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

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

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

添加认证凭证

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

具体操作如下

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

<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更改为一个安全性高、无法被轻易猜解的值):

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

最新文章

  1. 自定义UIButton
  2. Vue2.X的路由管理记录之 钩子函数(切割流水线)
  3. WCF传输图片解决方案
  4. Flask的socket.error:10053
  5. [No000053]我25岁了,是应该继续挣钱,还是选择自己的爱好?--正好庆祝自己25岁生日
  6. 作业一直&quot;执行&quot;
  7. CSS中 opacity的设置影响了index(层数)的改变
  8. Oracle 直方图实例测试
  9. 【Memcache】下载和安装
  10. XML.ObjTree -- XML source code from/to JavaScript object like E4X
  11. ios5和ios6横竖屏支持及ipad和iphone设备的判断
  12. IntelliJ IDEA 控制台 乱码 有效解决办法
  13. 《JAVASCRIPT高级程序设计》闭包
  14. web workers工作线程
  15. LeetCode - 661. Image Smoother
  16. ArcGIS Engine 笔记-控件类型
  17. Jmeter实现dubbo接口压测案例
  18. NLP&amp;深度学习:近期趋势概述
  19. 接口压力测试--Jmeter
  20. BootStrap的布局学习

热门文章

  1. 【MathType教学】表示分类的大括号怎么打
  2. 【VUE】2.渲染组件&amp;重定向路由
  3. 根节点到叶子节点路径之和为target
  4. J2EE基本概念
  5. 16个非常有趣的HTML5 Canvas动画特效集合
  6. 基于混沌Logistic加密算法的图片加密与还原
  7. B 站今日黑白页是怎么实现的?
  8. pyhon的6大基本数据类型
  9. 浅尝 Elastic Stack (二) Logstash
  10. MongoDB 分片集群配置