【vulhub靶场】Tomcat中间件漏洞复现

【vulhub靶场】Tomcat中间件漏洞复现

  • 一、Tomcat AJP 任意文件读取/包含漏洞 (CVE-2020-1938)
    • 1. 漏洞描述
    • 2. 影响版本
    • 3. 漏洞原理
    • 4. 漏洞复现
  • 二、任意文件写入漏洞 (CVE-2017-12615)
    • 1. 漏洞原理
    • 2. 影响版本
    • 3. 漏洞复现
  • 三、Tomcat 弱密码 && 后端 Getshell 漏洞
    • 1. 漏洞描述
    • 2. 影响版本
    • 3. 漏洞复现

Tomcat介绍

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

一、Tomcat AJP 任意文件读取/包含漏洞 (CVE-2020-1938)

1. 漏洞描述

Apache Tomcat文件包含漏洞是由Tomcat AJP协议存在缺陷而导致,可利用该漏洞通过构造特定参数进行文件包含操作,进而读取受影响Tomcat服务器上的Web应用目录下的任意文件,如配置文件或源代码等。此外,如果目标应用有文件上传功能,攻击者还可以利用这个漏洞配合文件包含来实现远程代码执行,从而控制整个系统。

2. 影响版本

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

3. 漏洞原理

Tomcat 配置了两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件以及可以包含任意文件,如果有某上传点,上传图片马等等,即可以获取shell

tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip。
在这里插入图片描述

4. 漏洞复现

复现环境:vulhub靶场+kali2023

开启靶机

root@Fly:~/vulhub/tomcat/CVE-2020-1938# docker compose build
root@Fly:~/vulhub/tomcat/CVE-2020-1938# docker compose up -d

在这里插入图片描述

  1. 扫描靶机开放的端口
┌──(root㉿kali)-[/home/kali/Desktop]
└─# nmap -sV -p- 192.168.111.146

发现8080端口开启(AJP默认端口8009)

  1. 利用poc进行漏洞检测,若存在漏洞则可以查看webapps目录下的所有文件
┌──(root㉿kali)-[/home/kali/Desktop]
└─# git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi      

在这里插入图片描述
3. 尝试读取8009端口下的web.xml文件

┌──(root㉿kali)-[/home/kali/Desktop]
└─# cd CNVD-2020-10487-Tomcat-Ajp-lfi ┌──(root㉿kali)-[/home/kali/Desktop/CNVD-2020-10487-Tomcat-Ajp-lfi]
└─# python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py  -p 8009 -f /WEB-INF/web.xml 192.168.111.146

存在CVE-2022-1938漏洞,使用相关poc测试发现成功拉取到文件
在这里插入图片描述
在这里插入图片描述

二、任意文件写入漏洞 (CVE-2017-12615)

1. 漏洞原理

由于配置不当(非默认配置),将配置文件conf/web.xml中的readonly设置为了 false,导致可以使用PUT方法上传任意文件,但限制了jsp后缀的文件。
默认情况下 readonly 为 true,当 readonly 设置为 false 时,可以通过 PUT / DELETE 进行文件操控并可以执行任意代码。

2. 影响版本

主要影响的是Tomcat : 7.0.0-7.0.81

3. 漏洞复现

【vulhub靶场】
开启环境,并且查看配置文件conf/web.xml中的readonly是否设置为 false

root@Fly:~/vulhub/tomcat/CVE-2017-12615# docker compose build
root@Fly:~/vulhub/tomcat/CVE-2017-12615# docker compose up -d
root@Fly:~/vulhub/tomcat/CVE-2017-12615#  docker ps
CONTAINER ID   IMAGE    COMMAND    CREATED     STATUS    PORTS     NAMES
930557c071d3   cve-2017-12615-tomcat   "catalina.sh run"   20 minutes ago   Up 19 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cve-2017-12615-tomcat-1root@Fly:~/vulhub/tomcat/CVE-2017-12615#  docker exec -ti 930557c071d3 bash
root@930557c071d3:/usr/local/tomcat# ls
LICENSE  RELEASE-NOTES	bin   include  logs	       temp	work
NOTICE	 RUNNING.txt	conf  lib      native-jni-lib  webapps
root@930557c071d3:/usr/local/tomcat# cat conf/web.xml | grep readonly<!--   readonly            Is this context "read only", so HTTP           -->
<init-param><param-name>readonly</param-name><param-value>false</param-value></init-param>

在这里插入图片描述
可以看到这里Tomcat 设置了写入权限(readonly=false),这导致了我们可以将文件写入服务器的结果。

成功运行上述命令后,通过访问网站看到 Tomcat 的示例页面。http://your-ip:8080

在这里插入图片描述
抓包可以看到是GET方法,进行修改

在这里插入图片描述
修改为PUT方法,写入一个1.txt并向其文件中写入内容

在这里插入图片描述
然后进入服务器查看,成功将1.txt写入服务器中。

在这里插入图片描述
Tomcat 在一定程度上检查了文件后缀(不能直接写 jsp),直接上传导致报错,但我们还是可以通过一些文件系统功能绕过限制。
在这里插入图片描述
方法一:使用斜杠/,斜杠在文件名中是非法的,所以会被去除(Linux和Windows中都适用)

在这里插入图片描述
从服务器可以看到成功写入jsp后缀的文件
在这里插入图片描述
方法二:首先使用%20绕过。%20对应的是空格,在windows中若文件这里在jsp后面添加%20即可达到自动抹去空格的效果。

在这里插入图片描述
从服务器可以看到,成功上传jsp后缀的文件
在这里插入图片描述
方法三:使用Windows NTFS流,在jsp后面添加::$DATA

在这里插入图片描述

在这里插入图片描述

三、Tomcat 弱密码 && 后端 Getshell 漏洞

1. 漏洞描述

Tomcat 支持通过后端部署 war 文件,因此我们可以直接将 webshell 放入 web 目录下。为了访问后端,需要权限。在tomcat8环境下,默认的后台密码为tomcat:tomcat,未修改默认密码就会造成未经授权的后台访问。

2. 影响版本

Tomcat 8.0版本

Tomcat7+的权限如下:

  • manager(后台管理)
  • manager-gui(html页面权限)
  • manager-status(查看状态的权限)
  • manager-script(文本界面权限和状态权限)
  • manager-jmx(jmx 权限和状态权限)

host-manager(虚拟主机管理)

  • admin-gui(html页面权限)
  • admin-script(文本界面权限)

3. 漏洞复现

开启靶机

在这里插入图片描述
弱口令进入(账号:tomcat 密码:tomcat)
在这里插入图片描述
再使用哥斯拉生成一个jsp木马文件在这里插入图片描述
在这里插入图片描述
压缩完成之后进行更改后缀,zip—> war,进行上传

在这里插入图片描述

在这里插入图片描述
点击进入之后会发现报错,先不要慌
在这里插入图片描述
加上文件名即可,发现无报错,但是啥也没有显示,说明上传成功了。

在这里插入图片描述
使用哥斯拉连接
在这里插入图片描述
在这里插入图片描述
连接成功,拿到webshell进入后门。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试题:解释CountDownLatch, CyclicBarrier和Semaphore在并发编程中的使用

在并发编程中&#xff0c;CountDownLatch、CyclicBarrier 和 Semaphore 是 Java 提供的同步辅助类&#xff0c;它们用于控制线程之间的协调。以下是每个类的基本用法和特点&#xff1a; CountDownLatch&#xff08;倒计时门闩&#xff09;&#xff1a; CountDownLatch 是一个同…

C语言程序的编译与链接过程

在编写C语言程序时&#xff0c;我们通常只是编写源代码&#xff08;.c文件&#xff09;&#xff0c;但要让计算机真正执行这些代码&#xff0c;还需要经过编译和链接两个主要步骤。下面&#xff0c;我们将详细解析这两个过程。 一、编译过程 编译是将源代码&#xff08;.c文件…

unity华为sdk接入指路指南

目前比较靠谱的几个方案&#xff1a;试过几个仅供参考 温馨提示&#xff1a;最高目前可支持方案到unity2021版本以下&#xff0c;以上请联系华为官方寻求技术支持 Unity集成华为游戏服务SDK方式&#xff08;一&#xff09;&#xff1a;集成Unity官方游戏SDK&#xff1a; 华为…

数据倾斜常见的解决办法

造成数据倾斜的原因主要有2种&#xff1a;在map端读取不可分割的大文件、处理大量相同的key 解决办法一般有以下几种&#xff1a; 1、对于空值引发的数据倾斜 &#xff08;1&#xff09;在sql语句中单独处理空值的数据&#xff0c;最后union all &#xff08;2&#xff09;…

关于多态~

多态的基本概念 多态是c面向对象的三大特性之一 多态分为两类&#xff1a;静态多态和动态多态 静态多态&#xff1a;函数重载&#xff0c;运算符重载&#xff0c;复用函数名 动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态的区别&#xff1a; 静态…

基于CLAHE算法的图像增强及评价

摘要&#xff1a; 本研究旨在探讨对比度限制自适应直方图均衡化&#xff08;CLAHE&#xff09;算法在数字图像处理中的应用。CLAHE算法通过在局部区域内进行直方图均衡化&#xff0c;有效地增强了图像的对比度&#xff0c;并在保持图像细节的同时避免了过度增强的问题。本文通过…

Eclipse 开创性地集成 Neon Stack,将 EVM 兼容性带到 SVM 网络

2024年5月2日&#xff0c;全球——在塑造区块链网络的战略联盟的过程中&#xff0c;Eclipse 通过集成 Neon EVM 核心团队开发的技术堆栈 Neon Stack&#xff0c;成为首个打破 EVM-SVM 兼容性障碍的生态。 Eclipse 旨在通过结合以太坊和 Solana 的最佳特性&#xff0c;来重构区…

mksh静态编译

代码来源&#xff1a;https://github.com/MirBSD/mksh.git 需求&#xff0c;基于musl库编译一个静态可执行文件&#xff0c;验证 musl库是否正常 根据 Build.sh文件定义&#xff0c;可以设置 LDFLAGS, CFLAGS,LIBS等参数 1. 首先编译musl ./configure --enable-debugyes --…

java 继承和静态属性或方法

目录 继承 静态属性和方法 继承与静态属性或方法的关系&#xff1a; 示例&#xff1a; 注意&#xff1a; PS&#xff1a;如有错漏之处&#xff0c;敬请指正 在Java中&#xff0c;继承和静态属性或方法是面向对象编程中的两个重要概念。它们在类设计和使用中扮演着不同的角…

数据结构(c):队列

目录 &#x1f37a;0.前言 1.什么是队列 2. 队列的实现 2.1定义队列节点 2.2定义队列 2.3队尾入队列 2.4判断队列是否为空 2.5队头出队列 2.6 队列首元素 2.7队尾元素 2.8队列内的元素个数 2.9销毁队列 3.试运行 &#x1f48e;4.结束语 &#x1f37a;0.前言 言C之…

Partisia Blockchain 生态首个zk跨链DEX现已上线

在5月1日&#xff0c;由Partisia Blockchain与zkCross创建合作推出的Partisia zkCrossDEX在Partisia Blockchain生态正式上线。Partisia zkCrossDEX是Partisia Blockchain上重要的互操作枢纽&#xff0c;其融合了zkCross的zk技术跨链互操作方案&#xff0c;并利用Partisia Bloc…

【SSM进阶学习系列丨分页篇】PageHelper 分页插件集成实践

文章目录 一、说明什么是分页PageHelper介绍 二、导入依赖三、集成Spring框架中四、编写Service五、编写Controller六、编写queryAllByPage页面展示数据 一、说明 什么是分页 ​ 针对分页&#xff0c;使用的是PageHelper分页插件&#xff0c;版本使用的是5.1.8 。 ​ 参考文档…

Linux命名管道的创建及应用

目录 一、命名管道的定义即功能 1.1创建命名管道 1.2匿名管道和命名管道的区别 1.3命名管道的打开规则 1.4系统调用unlink 二、进程间命名管道的创建及使用 2.1Comm.hhp 2.2PipeServer.cc 2.3PipeClient.cc 一、命名管道的定义即功能 管道应用的一个限制就是只能在具有…

[报错解决]SpringBoot子项目打jar包启动报 XXX--1.0-SNAPSHOT.jar中没有主清单属性

目录 报错信息解决原因原因分析解决方案 报错信息 解决 原因 在使用SpringBoot架构搭建父子工程时&#xff0c;使用IDEA可以正常启动&#xff0c;对子项目打成jar包后使用jar方式启动时&#xff0c;会报错xx.jar中没有主清单属性。 原因分析 原因主要是在使用jar方式启动时…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

Hi3516标准系统入门&#xff08;命令行方式&#xff09; 注意&#xff1a; 从3.2版本起&#xff0c;标准系统不再针对Hi3516DV300进行适配验证&#xff0c;建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作&#xff0c;则可能会…

javaweb学习笔记1

1、基本概念 1.1、前言 web开发&#xff1a; web&#xff0c;网页的意思&#xff0c;www.baidu.com 静态web html,css 提供给所有人看的数据始终不会发生变化&#xff01; 动态web 淘宝&#xff0c;几乎是所有的网站&#xff1b; 提供给所有人看的数据始终会发生变化&…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员掌握地下水数值模拟软件GMS的全过程实际操作技术的基本技能&#xff0c;而且可以深刻理解模拟过程中的关键环节&#xff0c;以解决实际问题能力。同时为满足环评从业人员进一步加强地下水数值模…

typescript 中的泛型

泛型&#xff1a;解决 类、接口、方法的复用性、以及对不特定数据类型的支持 传入的参数与返回参数类型一致 泛型函数 // T表示泛型&#xff0c;具体什么类型是调用这个方法的时候决定的 function getData<T>(value: T): T {return value } getData<number>(123) …

Linux生成密钥对并配置免密访问

(1) 在客服端生成密钥对 先生成私钥&#xff0c;再生成公钥 ssh-keygen ---生成密钥对命令 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): --保存密钥对路径 Enter passphrase (empty for no passphrase): 输入…

腾讯突然宣布,微信鸿蒙版要来了!

今年初&#xff0c;华为宣布HarmonyOS NEXT命名为“鸿蒙星河版”&#xff0c;并计划在二季度启动开发者 Beta 计划&#xff0c;四季度发布商用正式版。 消息一出&#xff0c;不少人为之振奋。 鸿蒙星河版因不再兼容安卓开源应用&#xff0c;仅支持鸿蒙内核和系统的应用&#x…