常见中间件漏洞之一 ----【Tomcat】

中间件Tomcat介绍:

tomcat是⼀个开源⽽且免费的jsp服务器,默认端⼝ : 8080,属于轻量级应⽤服务器。它可以实现 JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的⼀款环境。

在历史上也披露出来了很多的漏洞。以下讲的就是三种经典的漏洞。

一、CVE-2017-12615【Tomcat put⽅法任意⽂件写⼊漏洞】

漏洞原理:

当在Tomcat的conf(配置⽬录下)/web.xml配置⽂件中添加readonly设置为false时,将导致该漏洞产⽣,(需要允许put请求) , 攻击者可以利⽤PUT⽅法通过精⼼构造的数据包向存在漏洞的服务器⾥⾯上传 jsp⼀句话⽂件,从⽽造成远程命令执⾏,getshell等。

1. 开启靶场环境

【Centos7.6 虚拟机中开启环境,也可以在云服务器中搭建环境】

切换目录:cd /vulhub-master/tomcat/CVE-2017-12615

修改版本为3:vim docker-compose.yml

开启环境:docker-compose up -d

查看开启环境的端口:docker ps,发现端口是8080

注意:如果端口被占用,在修改版本步骤中,也可以修改端口,同时保证“安全”处该端口保证开放【如果看过之前分享的内容,会知道我们将1-65535端口都开放了】。再重新启动环境即可。

2. 访问靶场网址  ip+端口   

192.168.182.143:8080

3.  首页抓包,修改为PUT方式提交

Tomcat允许适⽤put⽅法上传任意⽂件类型,但不允许jsp后缀⽂件上传,因此我们需要配合 windows的 解析漏洞。        PUT /shell.jsp%20

get方式修改为put方式上传txt文件进行测试【必须先测试,养成习惯】

访问上传的1.txt文件,发现显示了内容,上传成功。

4. 使用哥斯拉生成jsp木马文件,并上传到靶场

打开哥斯拉【Godzilla】,点击管理--生成,有效载荷为Java,点击生成,保存为1.jsp文件。

再次尝试上传文件,以2.jsp为例,上传内容为123,发现上传失败。结合上一步txt文件上传成功,分析出上传方式没问题,而上传文件的后缀jsp不可以。【这是体现了先测试txt文件上传的重要性】

遇到文件后缀被过滤,思考:加空格、加斜杠(/)或者数据流绕过(::$DATA)

加空格,访问地址为ip:8080/2.jsp空格,发现仍然失败。

加 /,访问地址为:ip:8080/1.jsp/,被当做目录执行。

接着上传我们通过哥斯拉生成的木马1.jsp文件,上传成功

5. 访问上传的jsp木马文件,哥斯拉进行连接

哥斯拉连接 

右键--进入--文件管理,就可以控制目标了

6. 关闭docker开启的容器,并删除

docker ps先查看当前开启的docker容器服务,

docker stop  查到需要关闭的容器id,回车进行关闭

docker rm 容器id,删除容器。【一定要先关闭服务,再删除容器

注意:容器记得及时关闭删除,避免资源占用和浪费。同时预防端口被占用问题。

二、后台弱⼝令部署war包

漏洞原理:

在tomcat8环境下默认进⼊后台的密码为 tomcat/tomcat ,未修改造成未授权即可进⼊后台,或者管 理员把密码设置成弱⼝令。

1.环境搭建

切换目录:cd vulhub-master/tomcat/tomcat8

开启靶场环境:docker-compose up -d

修改版本为3:vim docker-compose.yml

再次开启环境。

开启成功 

2.访问ip:端口

docker ps查看开启docker容器的端口,端口为8080

3.弱口令登录管理界面

直接点击Manager App或者访问管理员界面ip:8080/manager/html

弱口令:tomcat、tomcat

登录成功

4.  制作WAR包

发现可上传war文件

制作WAR包,将JSP⽊⻢压缩为ZIP格式,然后修改后缀为war就可以了。
   --------zip->.war--------》    

5.⽂件上传成功后,默认会在⽹站根⽬录下⽣成和war包名称⼀致得⽬录,然后⽬录中得⽊⻢就是压缩 前的⽂件名。

发现/1,这就是我们上传的。

6. 该文件里有我们的1.jsp木马文件,进行访问

ip:8080/1/1.jsp

7.  哥斯拉进行连接,可控制目标

8. 关闭环境容器,并删除

docker ps----------》  docker stop 容器id,停止服务  ---》docker rm 容器id,删除容器

三、CVE-2020-1938【Tomcat⽂件包含漏洞

靶场原理:

由于Tomcat AJP协议设计上的缺陷,攻击者通过Tomcat AJP Connector 可以读取或包含Tomcat上所 有 Webapp⽬录下的任意⽂件,例如:

可以读取webapp配置⽂件或源码⽂件。

此外如果⽬标应⽤有⽂件上传的功能情况下,配合为⽂件包含漏洞利⽤GetShell。

1.环境搭建

cd vulhub-master/tomcat/CVE-2020-1938

docker-compose up -d

修改版本号为3:vim docker-compose.yml

再次开启环境:docker-compose up -d 

查看端口:docker ps ,端口为8009

2.访问ip:8009失败,访问8080成功

tomcat默认的conf/server.xml中配置了2个Connector,⼀个为 8080 的对外提供的HTTP协议端⼝, 另 外⼀个就是默认的 8009 AJP协议端⼝,两个端⼝默认均监听在外⽹ip。

3.POC:

下载tomcat文件包含.py,拖进kali,使用python2进行运行【必须是python2】。

python2 Tomcat-ROOT路径下文件包含(CVE-2020-1938).py -p 8009 -f /WEB-INF/web.xml 192.168.182.143 

读取到目标文件内容,练习成功。

4.关闭环境,删除容器

查看当前开启的容器信息:docker ps

关闭目标容器:docker stop id

删除目标容器:docker rm id

【及时关闭并且删除目标容器,可以节省空间资源和预防端口占用问题】

Tomcat的漏洞简单练习到这。

对于中间件之一的漏洞了解,望对每位读者有所成效。

拜拜。。。 

                                                                                                                        ---------2025/3/24 0:24

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

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

相关文章

GoogleNet的简易实现

这里使用GooleNet对MNIST手写数据集进行分类,最后的效果达到了在测试集98%的准确率。这里关于该网络的细节可以在网络上搜索到,相关原理也可以搜索到,这里仅展示网络的代码实现,这里是基于pytorch实现的,详细的代码如下…

javaweb自用笔记:Mybatis

目录 mybatis 配置sql书写提示 JDBC 数据库连接池 lombok mybatis 只需要定义Mapper接口就好,不需要有实现类,因为框架底层会自动生成实现类 配置sql书写提示 JDBC 数据库连接池 lombok XML映射文件 动态SQL

Rust从入门到精通之精通篇:22.Unsafe Rust 详解

Unsafe Rust 详解 在 Rust 的设计哲学中,安全性是核心原则之一。Rust 的所有权系统、借用检查器和类型系统共同保证了内存安全和线程安全。然而,有些底层操作无法通过 Rust 的安全检查机制进行验证,这就是 unsafe Rust 存在的原因。在本章中,我们将深入探讨 unsafe Rust,…

比手动备份快 Iperius全自动加密备份,NAS/云盘/磁带机全兼容

IperiusBackupFull是一款专为服务器和工作站设计的备份解决方案,它同时也是一款针对Windows 7/8/10/11/Server系统的简洁且可靠的备份软件。该软件支持增量备份、数据同步以及驱动器镜像,确保能够实现完全的系统恢复。在备份存储方面,Iperius…

deepseek实战教程-第六篇查找源码之仓库地址与deepseek-R1、deepseek-LLM仓库内容查看

上一篇讲了支持deepseek的模型应用的本地安装和部署以及使用。再上一篇讲解了deepseek提供的开放api,便于开发者基于deepseek提供的接口来编写属于自己的业务应用程序。但是前面几篇我们都是在用模型,我们知道deepseek是开源的,那么deepseek的源码在哪里,具体源码是什么样的…

ES 加入高亮设置

searchTextQueryOne new MatchQuery.Builder().field(searchFieldOne).query(searchText).build();// 帮助中心文档切分 只查询6条Integer finalTopK 10;List<String> newReturnFileds returnFields;newReturnFileds.add("kid"); // 需要返回kidHighlight h…

mapbox进阶,添加鹰眼图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️mapboxgl-minimap 鹰眼控件二、🍀添加…

亮数据爬取API爬取亚马逊电商平台实战教程

前言 在当今数据驱动的商业环境中&#xff0c;企业需要快速、精准地获取互联网上的公开数据以支持市场分析、竞品调研和用户行为研究。然而&#xff0c;传统的手动网页爬取方式面临着诸多挑战&#xff1a;IP封锁、验证码干扰、网站结构频繁变更&#xff0c;以及高昂的运维成本…

「Unity3D」使用C#获取Android虚拟键盘的高度

原理是&#xff1a;利用getWindowVisibleDisplayFrame方法&#xff0c;获取Android窗口可见区域的Rect&#xff0c;这个Rect剔除了状态栏与导航栏&#xff0c;并且在有虚拟键盘遮挡的时候&#xff0c;会剔除这个遮挡区域。 接着&#xff0c;Unity的safeArea也剔除了状态栏与导…

“城市超级智能体”落地,联想智慧城市4.0“功到自然成”

作者 | 曾响铃 文 | 响铃说 交通摄像头捕捉到车流量数据&#xff0c;进入一套“自动化”的城市整体管理体系中&#xff0c;交通路况信息、天气变化情况以及城市大型活动安排等看似分散的数据被整合&#xff0c;根据预测的路况精准调控交通信号灯&#xff0c;让自动驾驶清扫车…

每日总结3.24

第十届蓝桥杯大赛软件赛省赛C/C 大学 B 组 183.完全二叉树的权值&#xff08;找规律&#xff0c;临界值&#xff09; #include <bits/stdc.h> using namespace std; int a[1000005]; int main() { int m;int d; cin>>m; int sum;int maxn0; for(int i1;i&…

计算机复试面试

数据库 1.设计过程/设计步骤 1.需求分析&#xff1a;明确客户需求&#xff0c;确定系统边界&#xff0c;生成数据字典 2.概念结构设计&#xff1a;将用户需求抽象为概念模型&#xff0c;绘制e-r图 3.逻辑结构设计&#xff1a;将e-r图转化为dbms相符合的逻辑结构&#xff0c;db…

模型 拆屋效应

系列文章分享模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。先过分后合理&#xff0c;易被接受。 1 拆屋效应的应用 1.1 高端手表销售案例 一、案例背景 在高端手表销售领域&#xff0c;销售人员面临顾客对价格敏感且购买决策谨慎的挑战。如何引导顾客接受较高…

Windows系统下Pycharm+Minianaconda3连接教程【成功】

0.引言 PycharmMinianaconda3开发组合的好处 优点类别具体优点描述环境管理便捷独立环境创建 环境复制与共享Miniconda3可创建多独立Python环境&#xff0c;支持不同版本与依赖&#xff0c;避免冲突。 能复制、分享环境配置&#xff0c;方便团队搭建相同开发环境。依赖管理高…

4、pytest常用插件

pytest 是一个功能非常强大的测试框架&#xff0c;支持丰富的插件系统。插件可以扩展 pytest 的功能&#xff0c;从而使测试过程更加高效和便捷。以下是一些常用的 pytest 插件及其作用&#xff1a; pytest-cov: 作用: 提供测试覆盖率报告&#xff0c;帮助你了解代码的表现情况…

python每日十题(10)

在Python语言中&#xff0c;源文件的扩展名&#xff08;后缀名&#xff09;一般使用.py。 保留字&#xff0c;也称关键字&#xff0c;是指被编程语言内部定义并保留使用的标识符。Python 3.x有35个关键字&#xff0c;分别为&#xff1a;and&#xff0c;as&#xff0c;assert&am…

Clio:具备锁定、用户认证和审计追踪功能的实时日志记录工具

在网络安全工具不断发展的背景下&#xff0c;Clio 作为一款革命性的实时日志记录解决方案&#xff0c;由 CyberLock Technologies 的网络安全工程师开发&#xff0c;于 2025 年 1 月正式发布。这款先进的工具通过提供对系统事件的全面可见性&#xff0c;同时保持强大的安全协议…

内核编程十三:进程状态详解

进程如同数字世界中的生命体&#xff0c;诞生时被系统母体赋予初始资源&#xff0c;在CPU的脉搏中呼吸&#xff0c;于内存的疆域里生长。它睁开线程之眼观察世界&#xff0c;伸出系统调用之手与环境互动&#xff0c;时而如幼童般单纯执行指令&#xff0c;时而如哲人般陷入阻塞沉…

GitLab 中文版17.10正式发布,27项重点功能解读【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

哈尔滨工业大学DeepSeek公开课人工智能:大模型原理 技术与应用-从GPT到DeepSeek|附视频下载方法

导 读INTRODUCTION 今天继续哈尔滨工业大学车万翔教授带来了一场主题为“DeepSeek 技术前沿与应用”的报告。 本报告深入探讨了大语言模型在自然语言处理&#xff08;NLP&#xff09;领域的核心地位及其发展历程&#xff0c;从基础概念出发&#xff0c;延伸至语言模型在机器翻…