Tomcat文件包含漏洞的搭建与复现:CVE-2020-1938
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"/>
Tomcat文件包含漏洞的搭建与复现:CVE-2020-1938的更多相关文章
- Apache Tomcat 文件包含漏洞(CVE-2020-1938)
2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938).该漏洞是由于Tomcat AJP协议存在缺陷 ...
- Apache Tomcat文件包含漏洞紧急修复
Tomcat 漏洞 tomcat有漏洞, 需要升级到9.0.31 https://cert.360.cn/warning/detail?id=849be16c6d2dd909ff56eee7e26ae ...
- 关于Apache Tomcat 文件包含漏洞(CVE-2020-1938)威胁整改
1.昨天收到关于这个漏洞的整改通告(https://mp.weixin.qq.com/s/qIG_z9imxdLUobviSv7knw),考虑到版本升级可能带来其他问题,所以采用如下方式: 2.用的a ...
- TomcatAJP文件包含漏洞
漏洞概述 2020年2月20日,国家信息安全漏洞共享平台(CNVD)发布关于Apache Tomcat的安全公告,Apache Tomcat文件包含漏洞(CNVD-2020-10487,对应CVE-2 ...
- Tomcat AJP 文件包含漏洞复现(CVE-2020-1938)
漏洞原理 Tomcat配置了两个Connecto,它们分别是HTTP和AJP. HTTP默认端口为8080,处理http请求:AJP默认端口8009,用于处理 AJP 协议的请求. AJP比http更 ...
- php文件包含漏洞(利用phpinfo)复现
利用docker复现该漏洞,访问http://192.168.80.156:8080/phpinfo.php,可以看到页面出现phpinfo页面 再访问http://192.168.80.156:8 ...
- CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现
CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...
- PHP文件包含漏洞(利用phpinfo)复现
0x01 简介 PHP文件包含漏洞中,如果找不到可以包含的文件,我们可以通过包含临时文件的方法来getshell.因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获 ...
- 文件包含漏洞(DVWA环境中复现)
LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'page' ]; ?> 可以看到,low级别的代码对包含的文件 ...
随机推荐
- Mac专用下载器Folx软件中有没有“下载速度控制”功能
Mac专用下载器Folx软件不仅下载速度快,功能多,而且也可以实现下载上传速度控制的功能.下面小编将在Mac系统平台上,使用Folx 5版本,向大家全面介绍下Folx这款下载软件的速度控制功能,其中包 ...
- JS获取当前日期及 js获取当前时间和一星期前的时间
var myDate = new Date(); new Date() 代表当前 年 月 日 时 分 秒: myDate.getYear(); //获取当前年份(2位),getY ...
- finalize和clean
弊端 1.执行的时间不确定,资源释放不能靠这2个方法.Cleaner规范指出:"清除方法在System.exit期间的行为是与实现相关的.不确保清除动作是否会被调用." 2#.如果 ...
- Spring源码解析之BeanFactoryPostProcessor(二)
上一章,我们介绍了在AnnotationConfigApplicationContext初始化的时候,会创建AnnotatedBeanDefinitionReader和ClassPathBeanDef ...
- SAD DNS--新型DNS缓存中毒攻击
一.DNS基础知识: 1.DNS简介: DNS 域名服务,用于建立 域名与 ip地址的 一对一 映射.DNS 将域名转换为 IP地址,以便浏览器能够加载 Internet 资源. 类似于一个翻译系统, ...
- DataTable 将一列转为List
c# linq用起来特方便,因此我们习惯性的用list来操作. 这里我们将 DataTable 一列转为List: List<T> homeworkIdList = (from r in ...
- Docker 跨平台在 netCore 中的从入门到部署
前言 从题目我们可以看的出,今天是五部曲的第三部,你可能会好奇,为啥没有见到前两部呢?这里我简单说下: 1.跨平台第一部曲:MySql 如果你看我的所有开源项目,应该能发现我已经全部迁移到了Mysql ...
- MVTMVC 区别
1,MVC的意思是 M:model V:views C:controller model是 主要是封装对数据库层的访问,对数据库中的数据进行增删改查操作 views 是 用于封装结果, 生程页面展示 ...
- IDEA无法识别src目录
如图 如此 即可 -------------------------------------------------------------------- 另一种办法是:让IDEA识别出module, ...
- moviepy音视频剪辑:视频剪辑基类VideoClip的__init__构造方法参数has_constant_size的作用
☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类VideoClip构造方法: __init__(self, make_frame=None, ismask=Fals ...