【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.hqwc.cn/news/674701.html

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

相关文章

Backblaze发布2024 Q1硬盘故障质量报告-2

截至2024年第一季度末&#xff0c;我们正在跟踪279,572块正在运行的硬盘。硬盘型号在2024年第一季度末必须拥有500块或更多的硬盘&#xff0c;并在整个使用寿命期间累积超过100,000个硬盘工作日&#xff0c;达到这个条件的所有型号盘的故障率趋势表现如下&#xff1a; 除了三种…

【Linux网络】PXE批量网络装机

目录 一、系统装机 1.1 三种引导方式 1.2 系统安装过程 1.3 四大重要文件 二、PXE 2.1 PXE实现原理 2.2 PXE手动搭建过程 2.3 kickstart配合pxe完成批量自动安装 一、系统装机 1.1 三种引导方式 硬盘光驱(U盘)网络启动 1.2 系统安装过程 加载boot loader加载启动安…

Python中GDAL批量将多个遥感影像各波段数值缩小10000倍的方法

本文介绍基于Python中的gdal模块&#xff0c;批量读取大量多波段遥感影像文件&#xff0c;分别对各波段数据加以数值处理&#xff0c;并将所得处理后数据保存为新的遥感影像文件的方法。 首先&#xff0c;看一下本文的具体需求。我们现有一个文件夹&#xff0c;其中含有大量.ti…

leetcode-括号生成-101

题目要求 思路 1.左括号的数量等于右括号的数量等于n作为判出条件&#xff0c;将结果存到res中 2.递归有两种&#xff0c;一种是增加左括号&#xff0c;一种是增加右括号&#xff0c;只要左括号的数量不超过n&#xff0c;就走增加左括号的递归&#xff0c;右括号的数量只要小于…

【mobx-入门与思考】

介绍 mobx 是 nodejs生态中的框架&#xff0c; 主要用于做状态管理&#xff0c;可以监控变量状态的变化。 nodejs中除了mobx&#xff0c;还有个redux&#xff0c;也是做状态管理的&#xff0c;都是比较成熟的框架&#xff0c;二者的选择可以参考 【nodejs状态管理: Redux VS M…

Buuctf-Misc题目练习

打开后是一个gif动图&#xff0c;可以使用stegsolve工具进行逐帧看。 File Format:文件格式 Data Extract:数据提取 Steregram Solve:立体试图 可以左右控制偏移 Frame Browser:帧浏览器 Image Combiner:拼图&#xff0c;图片拼接 所以可以知道我们要选这个Frame Browser …

Pycharm远程同步的mapping与sync

用Pycharm进行项目远程部署的时候会遇到两个同步文件&#xff0c;一个是点击 tools—>deployment—>configration——>mapping 一个是链接虚拟环境的时候会有一个sync&#xff0c;那么这两种同步有什么区别呢&#xff1f; 区别就是&#xff0c;2包括1&#xff0c;要用…

力扣437. 路径总和 III

Problem: 437. 路径总和 III 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义int类型函数rootSum(root, targetSum)&#xff0c;用于求取每一个节点等于目标函数的路径数&#xff1a; 1.1.易知rootSum(root, targetSum)求出的数量等于rootSum(root.left, targetSum - va…

2024.5.6 关于 SpringCloud 的基本认知

目录 引言 微服务框架所包含的技术栈 微服务架构演变 单体架构 分布式架构 微服务架构 微服务技术对比 认识 SpringCloud SpringBoot 版本兼容关系 服务拆分和远程调用 服务拆分注意事项 远程调用 引言 微服务是一种框架风格&#xff0c;按照业务板块来划分应用代码…

Android版本依赖Version catalog

曾经我们使用config.gradle文件进行版本依赖配置&#xff0c;然后在project的build.gradle.kts中使用如下方式引入&#xff1a; apply(from "./config.gradle") 缺点&#xff1a;在project的module中引用无任何提示&#xff0c;无法跳转到指定引用 一、创建versio…

如何全面规避医疗数据安全风险?“一中心三大管控域”打开新思路!

作为医院的核心基础设施&#xff0c;数据库已然演变成了一种具有“资产”属性的重要元素。而随着不断变化的医疗业务场景和日趋严格的合规性要求&#xff0c;如何让安全全方位贯穿医疗数据的生命周期&#xff0c;是一项系统性的建设工作&#xff0c;难点诸多。 基于多年的数据…

js 图片渐变

1. 点击图片&#xff0c;使其渐变为另一张图片 通过定义keyframes来创建一个淡入淡出的动画效果。当图片被点击时&#xff0c;先添加淡出动画使图片透明度从0渐变到1&#xff0c;然后在1秒后切换图片源并添加淡入动画使新图片透明度从0渐变到1&#xff0c;实现图片渐变效果。 …