当前位置: 首页 > news >正文

网络安全-使用HTTP动词篡改的认证旁路

这个东西去年的安全扫描都没有,今天就扫出来了,非常奇怪的一个东西。好吧,找资料找原因。结果可能应为搜索名词的原因,这个问题在群友的帮助下解决了。

在我理解中servlet只有post和get方法,然后结果怎么出来这么多奇奇怪怪的方法呢。这些方法干啥的呢?

首先找到的是一个禁用http下不安全的方法的博客,具体谁的博客我也没关注。先按照他的方法修改,修改方法也挺简单,改下tomcat的web.xml就好。

  1. <security-constraint>  
  2.     <web-resource-collection>  
  3.         <http-method>HEAD</http-method>  
  4.         <http-method>PUT</http-method>  
  5.         <http-method>DELETE</http-method>  
  6.         <http-method>OPTIONS</http-method>  
  7.         <http-method>TRACE</http-method>  
  8.         <url-pattern>/*</url-pattern>  
  9.     </web-resource-collection>  
  10.     <auth-constraint>  
  11.         <role-name></role-name>  
  12.     </auth-constraint>  
  13. </security-constraint>  
<security-constraint><web-resource-collection><http-method>HEAD</http-method><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>OPTIONS</http-method><http-method>TRACE</http-method><url-pattern>/*</url-pattern></web-resource-collection><auth-constraint><role-name></role-name></auth-constraint>
</security-constraint>

为啥要加这个呢!找了下web.xml的说明

WebDAV (Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server 上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这个协议的出现极大地增加了 Web 作为一种创作媒体对于我们的价值。基于 WebDAV  可以实现一个功能强大的内容管理系统或者配置管理系统。 

好吧,这样就理解了,既然是一个通讯协议增加了这些方法,那么按博主的方法改掉就好了。

可惜事与愿违,使用AppScan扫描还是存在这个问题。那么就纳闷了,为啥会出现这样的情况呢?

于是找到了

AppScan问题“HTTP动词篡改导致的认证旁路”的解决方法

这篇博客,这个里面提供的思路不错,看得出来他也配置了web.xml。这样看起来要升级tomcat的节奏?

如果要升级tomcat我讲面临和那个博主一样的问题,公司层面不好解决,而且公司也不只是用tomcat。其他的应该也存在问题。

从上面可以明显看出来这个漏洞和WebDAV 这个东西其实关系并不大,主要问题在于篡改,WebDAV 只是提供了一些方法,这些方法虽然会导致一些修改或者什么的问题。但是如果是篡改了一个不存在的方法,其实结果也是一样。好吧,其实上面那个博客最大的好处不是认识到了问题的根源,而是找到一个测试神器burpsuite。再也不用苦逼的猜了。

好吧,那么就剩下一个办法,那就是自己写拦截器。拦截住除开get和post的方法。为啥不在web.xml配置这个?因为我试过了配置了之后我自己都登陆不上。

谁配置成功了可以告诉我,我是拿现在这个6.0的tomcat毫无办法。以后考虑升级到9.0。

写拦截器去了,祝福我能成功。

ok,今天加了拦截器,成功干掉了这个问题。

  1. <span style="white-space:pre">    </span> String method = req.getMethod();  
  2.         if(!"GET".equals(method)&&!"POST".equals(method)&&!"HEAD".equals(method))  
  3.         {  
  4.             log.error("The request with Method["+method+"] was forbidden by server!");  
  5.             response.setContentType("text/html;charset=GBK");  
  6.             response.setCharacterEncoding("GBK");  
  7.             resp.setStatus(403);  
  8.         response.getWriter().print("<font size=6 color=red>对不起,您的请求非法,系统拒绝响应!</font>");  
  9.             return;  
  10.         }  
<span style="white-space:pre">	</span> String method = req.getMethod();if(!"GET".equals(method)&&!"POST".equals(method)&&!"HEAD".equals(method)){log.error("The request with Method["+method+"] was forbidden by server!");response.setContentType("text/html;charset=GBK");response.setCharacterEncoding("GBK");resp.setStatus(403);response.getWriter().print("<font size=6 color=red>对不起,您的请求非法,系统拒绝响应!</font>");return;}

在burpsuite上面验证,也成功的反应出了正确的消息头。

这里请记住

  1. resp.setStatus(403);  
resp.setStatus(403);

不然是无法通过AppScan的扫描的

相关文章:

网络安全-使用HTTP动词篡改的认证旁路

这个东西去年的安全扫描都没有&#xff0c;今天就扫出来了&#xff0c;非常奇怪的一个东西。好吧&#xff0c;找资料找原因。结果可能应为搜索名词的原因&#xff0c;这个问题在群友的帮助下解决了。 在我理解中servlet只有post和get方法&#xff0c;然后结果怎么出来这么多奇…...

多种MyBatis写法(数据库操作)

MyBatis&#xff0c;这个从iBatis演变而来的Java持久层框架&#xff0c;凭借其强大的功能和性能&#xff0c;早已成为企业级应用的首选。本文展示几种MyBatis写法&#xff0c;保证数据库操作既高效又灵活。 1. 批量操作 批量操作是提升数据库操作效率的重要手段。MyBatis提供…...

centos 手动安装libcurl4-openssl-dev库

下载源代码 curl downloadshttps://curl.se/download/ 选择需要下载的版本&#xff0c;我下载的是8.11.0 解压 tar -zxvf curl-8.11.0 查看安装命令 查找INSTALL.md&#xff0c;一般在docs文件夹下 –prefix &#xff1a;指定安装路径&#xff08;默认安装在/usr/local&…...

C#中的模拟服务器与客户端建立连接

创建一个控制台项目,命名为Server,模拟服务器端。在同一个解决方案下,添加新项目,命名为Client,模拟客户端。在服务器端与客户端之间建立TCP连接,并在客户端发送消息,在服务器端输出。 Server项目具体要求: 1.在Server项目中,用本机端点建立TcpListener对象,进行监…...

论文阅读——Supervised Learning With Quantum-Inspired Tensor Networks

张量网络是高维张量的有效表示&#xff0c;在物理和数学应用中非常成功。我们展示了如何通过使用矩阵乘积状态&#xff08;张量训练&#xff09;来参数化用于对图像进行分类的模型&#xff0c;将优化此类网络的算法应用于监督学习任务。对于 MNIST 数据集&#xff0c;我们获得的…...

HTML5系列(11)-- Web 无障碍开发指南

前端技术探索系列&#xff1a;HTML5 Web 无障碍开发指南 ♿ 致读者&#xff1a;构建人人可用的网络 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 Web 无障碍开发&#xff0c;学习如何创建一个真正包容、人人可用的网站。让我们一起为更多用户提供更好的网络…...

信号和槽思维脑图+相关练习

将登录框中的取消按钮使用信号和槽的机制&#xff0c;关闭界面。 将登录按钮使用信号和槽连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为"123456",如果账号密码匹配成功&#xff0c;当前界面关…...

Scala编程基础:模式匹配、解构赋值与正则表达式

在Scala编程语言中&#xff0c;模式匹配、解构赋值和正则表达式是三个非常强大的特性&#xff0c;它们可以让我们以更简洁、更直观的方式处理数据。本文将通过三个示例&#xff0c;详细解释这些特性的使用方法和背后的原理。 1. 模式匹配与case class 模式匹配是Scala中处理数…...

【大数据技术基础】 课程 第1章 大数据技术概述 大数据基础编程、实验和案例教程(第2版)

第1章 大数据技术概述 1.1 大数据时代 这本书的标题是《大数据时代》&#xff0c;副标题为“生活、工作与思维的大变革”。这本书由维克托迈尔-舍恩伯格&#xff08;Viktor Mayer-Schnberger&#xff09;和肯尼斯库克耶&#xff08;Kenneth Cukier&#xff09;合著&#xff0c…...

【基础分析】——宏参数连接

示例1&#xff1a; #include<stdio.h>#define STR1(s) #s#define FUN1(a,b) (int)(a##e##b)int main(int argv, char* agrc[]) {printf(STR1(king...));printf("\n");printf("%d\n", FUN1(2, 3));return 0; } 结果&#xff1a; &#xff08;注&…...

算法3--二分查找

二分查找 原理经典例题[704. 二分查找](https://leetcode.cn/problems/binary-search/)[34. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/)[35. 搜索插入位置](https://leetcode.cn/p…...

【信息系统项目管理师】第7章:项目立项管理 考点梳理

文章目录 7.1 项目建议与立项申请7.2 项目可行性研究7.2.1 可行性研究的内容7.2.2 初步可行性研究7.2.3 详细可行性研究&#xff08;重点&#xff09; 7.3 项目评估与决策 【学习建议】本章大概考选择题2分左右&#xff0c;有可能考案例题。论文早年考过。本章知识点比较集中&a…...

帝可得-策略管理

策略管理 需求说明 策略管理主要涉及到二个功能模块&#xff0c;业务流程如下&#xff1a; 新增策略: 允许管理员定义新的策略&#xff0c;包括策略的具体内容和参数&#xff08;如折扣率&#xff09;策略分配: 将策略分配给一个或多个售货机。 #mermaid-svg-PSQOJMLJqVGn3W…...

opencv-android编译遇到的相关问题处理

1、opencv-android sdk下载 下载地址&#xff1a;https://opencv.org/releases/ 下载安卓SDK即可 2、解压下载好的SDK 3、导入opencv的SDK到安卓项目中 导入步骤在/OpenCV-android-sdk/sdk/build.gradle文件的注释中写的非常详细&#xff0c;大家可安装官方给出的步骤导入。…...

汽车IVI中控开发入门及进阶(三十六):QML调用蓝牙sdk的架构

Qt/QML本身在做GUI界面工程时,除了各种界面上的按钮、图片、工具条等元素之外,最方便的就是可以通过C++实现界面各种复杂逻辑,而实现上不可避免就需要一些外部库的支持,不管是静态库.a还是动态库.so,比如蓝牙模块。 而QML/C++启动一个蓝牙协议栈SDK作为一个进程,然后启动…...

C++设计模式之外观模式

动机 下图中左边方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合&#xff0c;随着外部客户程序和各子系统的演化&#xff0c;这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口&#xff1f;如何将外部客户程序的演化和内部子系统…...

前缀和篇——繁星斗斗数字交织中,觅得效率明月辉光(1)

前言 在这片无边无际的数字海洋中&#xff0c;如何从中提取出有价值的讯息&#xff0c;成为了计算机科学中的一项重要课题。前缀和算法&#xff0c;作为一种巧妙的技术&#xff0c;恰如其名——通过计算序列中各个元素的前缀和&#xff0c;能够为我们提供一种高效的查询方式&a…...

【论文复现】隐式神经网络实现低光照图像增强

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 隐式神经网络实现低光照图像增强 引言那么目前低光照图像增强还面临哪些挑战呢&#xff1f; 挑战1. 不可预测的亮度降低和噪声挑战2.度量友好…...

Secured Finance 推出 TVL 激励计划以及基于 FIL 的稳定币

Secured Finance 是新一代 DeFi 2.0 协议&#xff0c;其正在推出基于 FIL 的稳定币、固定收益市场以及具有吸引力的 TVL 激励计划&#xff0c;以助力 Filecoin 构建更强大的去中心化金融生态体系&#xff0c;并为 2025 年初 Secured Finance 协议代币的推出铺平道路。Secure Fi…...

2024前端框架年度总结报告(二):新生qwik+solid和次新生svelte+Astro对比 -各自盯着前端的哪些个痛点 - 前端的区域发展差异

引言 2024年&#xff0c;前端开发依然是技术领域的热点之一。随着 Web 应用的日益复杂&#xff0c;前端框架的更新换代也加速了。尽管 React、Vue 和 Angular 老牌框架年度总结 等“老牌”框架仍然占据着主流市场&#xff0c;但一些新兴的框架在不断挑战这些“巨头”的地位&am…...

MySQL大小写敏感、MySQL设置字段大小写敏感

文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...

每日速记10道java面试题13-MySQL篇

其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...

关于Chrome自动同步书签的解决办法

前言 并不一定适用所有用户&#xff0c; 目前我在网上搜集了一些资料&#xff0c;也做了一些尝试。 就我个人总结的经验来讲&#xff0c;分享大家以下几种办法&#xff1a; 1.书签同步插件 点击如下&#x1f517;&#xff1a; Chrome书签同步https://bm.famend.cn/ …...

江南大学《2024年807自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《江南大学807自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

在VSCode中搭建Python开发环境

在VSCode中搭建Python开发环境 1、安装 首先确保电脑已经安装好Python和VSCode。 2、安装VSCode的Python插件 3、选择python解释器 ctrlshiftP打开VSCode的命令行&#xff0c;输入python: select Interpreter选择合适的python版本。 4、运行代码 在windows下你可以直接使用…...

mac 安装python3和配置环境变量

mac 安装python3和配置环境变量 前言怎样选择python3的版本python3的安装1、去官网下载安装包2、下载完成后直接解压,检查安装是否成功 前言 在学习python的第一步就是安装它和配置他的环境变量&#xff0c;那么选择哪个版本的python你可曾知道&#xff0c;下面就讲解怎样选择…...

微信小程序版小米商城的搭建流程详解!

很多初学微信小程序语法的同学&#xff0c;可能不知道如何布局和搭建一个项目&#xff0c;下面我将讲解初学者如何搭建项目和注意事项。 一、 app.json的配置 {"pages": ["pages/index/index","pages/classification/classification","pag…...

Redis等Spring Cache 框架 实现基于注解的缓存功能

Spring Cache 框架 实现基于注解的缓存功能 底层 基于代理技术 一旦进入方法就进入代理对象 如果redis里有就直接返回 不会走方法 如果缓存没有数据 则通过反射走方法。 概念 缓存 相当于之前的事务处理 同步更改 只是提供了一层抽象 底层可以切换不同的缓存实现 EHCach…...

tcpreplay/tcpdump-重放网络流量/捕获、过滤和分析数据包

tcpdump 是一个网络数据包分析工具&#xff0c;通过捕获并显示网络接口上传输的数据包&#xff0c;帮助用户分析网络流量。 原理&#xff1a;用户态通过 libpcap 库控制数据包捕获&#xff0c;内核态通过网卡驱动获取数据包。 核心功能包括&#xff1a;捕获、过滤和分析数据包…...

【Linux】基础IO_文件系统IO_“一切皆文件”_缓冲区

目录 1. 理解"⽂件" 1-1 狭义理解 1-2 ⼴义理解 1-3 ⽂件操作的归类认知 1-4 系统⻆度 访问文件&#xff0c;需要先打开文件&#xff01;那么是由谁打开文件&#xff1f;&#xff1f;&#xff1f; 操作系统要不要把被打开的文件管理起来&#xff1f; 2. 回顾…...

基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写)

基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器&#xff08;模块化编写&#xff09; 1. 实验要求2. 功能分析3. 模块设计4. 波形图4.1 按键消抖模块4.2 按键控制蜂鸣器模块 5.代码编写5.1 rtl代码5.2 测试代码 6. 代码仿真7. 添加约束文件并分析综合 在上期的内容中&…...

Mnesia(三)

在表中保存复杂数据 Mnesia是被设计用来保存Erlang数据结构的。可以把任意类型的Erlang数据结构保存到Mnesia表中。 -export([init_mnesia_schema/0, start/0]). -export([add_plans/0, get_plan/1]). -include_lib("stdlib/include/qlc.hrl"). -record(shop, {ite…...

ELK的Filebeat

目录 传送门前言一、概念1. 主要功能2. 架构3. 使用场景4. 模块5. 监控与管理 二、下载地址三、Linux下7.6.2版本安装filebeat.yml配置文件参考&#xff08;不要直接拷贝用&#xff09;多行匹配配置过滤配置最终配置&#xff08;一、多行匹配、直接读取日志文件、EFK方案&#…...

【WPF中ControlTemplate 与 DataTemplate之间的区别?】

前言 WPF中ControlTemplate 与 DataTemplate之间的区别&#xff1f; 1. 定义&#xff1a; ControlTemplate 是用于定义 WPF 控件的外观和结构的模板。它允许您重新定义控件的视觉表现&#xff0c;而不改变控件的行为。 DataTemplate 是用于定义如何呈现数据对象的模板。它通…...

FFmpeg源码中,计算CRC校验的实现

一、CRC简介 CRC(Cyclic Redundancy Check)&#xff0c;即循环冗余校验&#xff0c;是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法&#xff0c;主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理&#xff0c;实现错误侦…...

js面试题

面试题&#xff1a;说一下call、apply、bind区别 共同点&#xff1a;功能一致 可以改变this指向 语法&#xff1a;函数.call() 函数.apply() 函数.bind() 区别&#xff1a;1.call、apply可以立即执行。bind不会立即执行&#xff0c;因为bind返回的是一个函数需要加入&#xff…...

Python酷库之旅-第三方库Pandas(255)

目录 一、用法精讲 1206、pandas.tseries.offsets.SemiMonthEnd.is_on_offset方法 1206-1、语法 1206-2、参数 1206-3、功能 1206-4、返回值 1206-5、说明 1206-6、用法 1206-6-1、数据准备 1206-6-2、代码示例 1206-6-3、结果输出 1207、pandas.tseries.offsets.S…...

STM32 进阶 定时器3 通用定时器 案例2:测量PWM的频率/周期

需求分析 上一个案例我们输出了PWM波&#xff0c;这个案例我们使用输入捕获功能&#xff0c;来测试PWM波的频率/周期。 把测到的结果通过串口发送到电脑&#xff0c;检查测试的结果。 如何测量 1、输入捕获功能主要是&#xff1a;测量输入通道的上升沿和下降沿 2、让第一个…...

【计算机网络】实验10:开放最短路径优先OSPF

实验10 开放最短路径优先OSPF 一、实验目的 本实验的主要目的是验证OSPF&#xff08;开放最短路径优先&#xff09;协议的作用&#xff0c;深入理解其在动态路由中的重要性。通过实验&#xff0c;我们将观察OSPF如何在网络中高效地传播路由信息&#xff0c;从而实现不同网络之…...

线程信号量 Linux环境 C语言实现

既可以解决多个同类共享资源的互斥问题&#xff0c;也可以解决简易的同步问题 头文件&#xff1a;#include <semaphore.h> 类型&#xff1a;sem_t 初始化&#xff1a;int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…...

Tree搜索二叉树、map和set_数据结构

数据结构专栏 如烟花般绚烂却又稍纵即逝的个人主页 本章讲述数据结构中搜索二叉树与HashMap的学习&#xff0c;感谢大家的支持&#xff01;欢迎大家踊跃评论&#xff0c;感谢大佬们的支持! 目录 搜索二叉树的概念二叉树搜索模拟实现搜索二叉树查找搜索二叉树插入搜索二叉树删除…...

Linux-GPIO应用编程

本章介绍应用层如何控制 GPIO&#xff0c;譬如控制 GPIO 输出高电平、或输出低电平。 只要是用到GPIO的外设&#xff0c;都有可能用得到这些操作方法。 照理说&#xff0c;GPIO的操作应该是由驱动层去做的&#xff0c;使用寄存器操作或者GPIO子系统之类的框架。 但是&#xff0…...

【模板】排序(py)/ 【深基9.例4】求第 k 小的数

题目描述 将读入的 NN 个数从小到大排序后输出。 输入格式 第一行为一个正整数 NN。 第二行包含 NN 个空格隔开的正整数 aiai​&#xff0c;为你需要进行排序的数。 输出格式 将给定的 NN 个数从小到大输出&#xff0c;数之间空格隔开&#xff0c;行末换行且无空格。 输…...

Linux获取文件属性

目录 stat函数 获取文件属性 获取文件权限 实现“head -n 文件名”命令的功能 编程实现“ls -l 文件名”功能 stat/fstat/lstat的区别&#xff1f; stat函数 int stat(const char *path, struct stat *buf); 功能&#xff1a;获取文件属性 参数&#xff1a; path&…...

一文说清:Git创建仓库的方法

0 引言 本文介绍如何创建一个 Git 本地仓库&#xff0c;以及与远程仓库的关联。 1 初始化仓库&#xff08;git init&#xff09; 1.1 概述 Git 使用 git init 命令来初始化一个 Git 仓库&#xff0c;Git 的很多命令都需要在 Git 的仓库中运行&#xff0c;所以 git init 是使…...

ASP.NET Core 负载/压力测试

文章目录 一、第三方工具二、使用发布版本进行负载测试和压力测试 负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。 尽管负载测试和压力测试的某些测试相似&#xff0c;但它们的目标不同。 负载测试&#xff1a;测试应用是否可以在特定情况下处理指定的用户负…...

红日靶场vulnstack (五)

前言 好久没打靶机了&#xff0c;今天有空搞了个玩一下&#xff0c;红日5比前面的都简单。 靶机环境 win7&#xff1a;192.168.80.150(外)、192.168.138.136(内) winserver28&#xff08;DC&#xff09;&#xff1a;192.168.138.138 环境搭建就不说了&#xff0c;和之前写…...

k8s,声明式API对象理解

命令式API 比如&#xff1a; 先kubectl create&#xff0c;再replace的操作&#xff0c;我们称为命令式配置文件操作 kubectl replace的执行过程&#xff0c;是使用新的YAML文件中的API对象&#xff0c;替换原有的API对象&#xff1b;而kubectl apply&#xff0c;则是执行了一…...

【人工智能】用Python和Scikit-learn构建集成学习模型:提升分类性能

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 集成学习(Ensemble Learning)是通过组合多个弱学习器提升模型性能的机器学习方法,广泛应用于分类、回归及其他复杂任务中。随机森林(Random Forest)和梯度提升(Gradient Boosting)是集成学习的两种…...

MSBUILD : error MSB1009: 项目文件不存在。

环境&#xff1a;win10 vscode1.95.3 clang15.0.4 问题&#xff1a;最近用vscodecmakeclang在windows上编译c项目&#xff0c;用mingw32不报错&#xff0c;用clang报错,错误如下&#xff0c; MSBUILD : error MSB1009: 项目文件不存在。 原因&#xff1a;与其他生成器(如Mak…...