查看原文
其他

CVE-2020-1938(Apache Tomcat文件包含漏洞)漏洞复现


漏洞编号:

CVE-2020-1938  Apache Tomcat文件包含漏洞

实验环境:

靶机:centos 7  ip 192.168.139.137

攻击机:kali linux  ip 192.168.139.135

 

漏洞影响版本:

Apache Tomcat=6

7<= Apache Tomcat <7.0.100

8<= Apache Tomcat <8.5.51

9<= Apache Tomcat <9.0.31

此漏洞为文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。利用方式属于文件包含漏洞。只要使用了上述Apache Tomca版本,开启8009端口Tomcat AJP协议,基本上都会中招。目标机器开启AJP Connector 服务端口(默认开启,为8009端口)

 

复现过程:

1、搭建Tomcat环境

本次复现使用的Tomcat环境为docker部署,具体步骤如下:

第一步:在centos7中使用docker搜索并拉取Tomcat镜像:

第二步:创建相应的镜像:


注意:在此步可以不用做过多配置,采取默认即可,需要注意的是要将端口开放两个,如果只开放8080端口是无法利用的,其8009端口必须开放,此端口为AJP协议端口。

在此步骤中我遇到过比较严重的问题在这里说出来跟大家分享一下,以免大家重蹈覆辙,首先我在使用docker部署的时候创建了相应的目录来存放web页面,在此次漏洞复现中用不到此部,在这里不过多阐述;第二个问题是在端口映射的时候,上面截图中8080对应的端口为8081,是因为第一次中我将后面8009对应的端口搞错了,因此没有将之前运行的镜像停用并删除,各位在复现的时候只需要将端口映射改为自己相应的端口映射即可,需要注意的是8009端口不能映射错误。不然会出现以下这种情况:


这种情况就是8009端口映射错误的情况。

2、使用nmap扫描一下开放的端口:
在Tomcat环境搭建完成之后,我们可以先使用nmap扫描一下靶机开放的端口,看是否开启了8009端口:

3、Poc利用
发现8009端口是开放状态,此时我们可以利用poc进行攻击了

这里面被读取到的文件就是Tomcat中WEB-INF目录下的web.xml文件,如果其中存在别的文件,同样可以读取出来,因为我这里是用的docker创建,并没有再创建新的文档所以不多做阐述。

修复方案:

1、临时禁用AJP协议端口,在conf/server.xm l配置文件中注释掉<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />  

2、配置ajp配置中的secretRequired跟secret属性来限制认证。

3、官方下载最新版下载地址:

https://tomcat.apache.org/download-70.cgi

https://tomcat.apache.org/download-80.cgi

https://tomcat.apache.org/download-90.cgi

https://github.com/apache/tomcat/releases



关于我们:

北京路劲科技有限公司(Beijing Lujin Technology Co. , Ltd.)成立于2019年1月4日,是一家提供全面系统集成与信息安全解决方案的专业IT技术服务公司。公司秉承“为网络安全保驾护航”的企业愿景及“提升国家整体安全”的使命,依据风险评估模型和等级保护标准,采用大数据等技术手段,开展网络安全相关业务。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。公司立足北京,走向全国,始终坚持“换位、细节、感恩”的核心价值观,以“共赢、共享、共成长”的经营理念为出发点,集合了一批敢于创新、充满活力、热衷于为IT行业服务的优秀人才,致力于成为您身边的网络安全专家。


关注路劲科技,关注网络安全!

公司:北京路劲科技有限公司

地址:北京市昌平区南邵镇双营西路78号院2号楼5层504


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存