Tomcat文件包含漏洞:CNVD-2020-10487(简介/验证/利用/修复)

漏洞简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件(webapps目录)。

影响范围

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

开启靶机

(1)此处直接使用vulhub搭建,方便快速,一键搞定。vulhub的搭建参见https://github.com/vulhub/vulhub/blob/master/README.zh-cn.md,此处不在赘述。
vulhub安装完后,直接进入tomcat/CVE-2020-1938目录下,输入docker-compose up -d启动(最好开代理下载会快很多)
在这里插入图片描述
(2)docker ps命令确认8080端口的apache已开启,8009端口的AJP服务也已开启。8009服务就是该漏洞所在服务,但是无法通过浏览器来直接访问连接。
在这里插入图片描述

漏洞验证(POC)

(1)使用github上检测脚本:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi,输入python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.3.103 -p 8009,成功读取WEB-INF/web.xml文件,漏洞验证成功。(python2版本)
在这里插入图片描述

漏洞利用

由于该漏洞利用有一点限制,必须要将文件上传到web目录下,文件后缀名不限,然后可以实现反弹shell。
(1)生成jsp文件反弹shell
在这里插入图片描述
(2)使用脚本执行上传的shell.jsp文件
在这里插入图片描述
(3)kali上监听地址,收到反弹的shell
在这里插入图片描述
在这里插入图片描述

漏洞修复

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

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

具体操作:

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

<Connector port="8009"protocol=“AJP/1.3” redirectPort=“8443” />
(2)将此行注释掉(也可删掉该行):

(3)保存后需重新启动Tomcat,规则方可生效。

二、若需使用Tomcat AJP协议,可根据使用版本配置协议属性设置认证凭证。

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

<Connector port="8009"protocol=“AJP/1.3” redirectPort="8443"address=“YOUR_TOMCAT_IP_ADDRESS” secret=“YOUR_TOMCAT_AJP_SECRET”/>

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

<Connector port="8009"protocol=“AJP/1.3” redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret=“YOUR_TOMCAT_AJP_SECRET” />

cnvd-2020-10487-tomcat-ajp-lfi是一种利用Tomcat中Apache JServ协议(AJP)的本地文件包含LFI漏洞。该漏洞允许攻击者在服务器上执行任意的文件读取和执行操作,从而可能导致敏感信息泄露、甚至服务器完全受控。 攻击者可以通过将恶意的AJP请求发送到Tomcat服务器的8009端口来利用漏洞。这些请求可以指定要读取的文件路径。由于Tomcat默认配置下AJP协议启用且未进行适当的安全限制,攻击者可以通过这个漏洞读取和执行服务器上的任意文件。 为了防止受到cnvd-2020-10487-tomcat-ajp-lfi漏洞的攻击,可以采取以下措施: 1. 禁用或限制AJPS协议的使用:可以通过修改Tomcat的配置文件来禁用或限制AJPS协议的使用。将AJP协议暴露在公共网络上可能会使服务器容易受到攻击。 2. 更新Tomcat版本:及时安装Tomcat安全更新和补丁,以保持服务器的安全性和稳定性。 3. 配置Tomcat访问控制:通过配置Tomcat的访问控制策略,限制外部访问与敏感文件相关的路径。 4. 使用防火墙和入侵检测系统(IDS):配置防火墙和IDS以监控和检测异常的网络活动,并及时阻止和警示可疑的AJP请求。 5. 最小权限原则:确保服务器上的所有账户和进程都具有最小权限。这样,即使攻击者成功利用漏洞,也能够最大限度地减小攻击的影响范围。 综上所述,cnvd-2020-10487-tomcat-ajp-lfi是一种危险的漏洞,但通过采取适当的防护措施,我们可以提高服务器的安全性,避免受到该漏洞的攻击。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值