漏洞挖掘-不安全的HTTP方法

news2024/9/29 15:26:43

前言:

  年关将至,这可能是年前最后一篇文章了。已经有一段时间没有更新文章了,因为最近也没有学到什么新的知识,也就没什么可写的,又不想灌水。最近关注的好兄弟们多了很多,在这里也是十分感谢大家的支持,在未来笔者也会在法律允许的范围内一如既往的为大家分享比较有用的知识,也会一如既往的不在文章里插广告恶心人。

  今天的这篇文章是笔者最近做漏洞挖掘的时候,无意中捡到的漏洞,这个漏洞就是典型的--服务器开启了不安全的HTTP方法,导致服务器易受攻击。那么究竟什么才是HTTP方法,他们有哪些危害,我们在平时测试的时候应该如何去测试呢?

0X01 HTTP方法有哪些

不安全的 HTTP 方法是指在不使用安全连接 (例如 TLS) 的情况下,可能导致数据泄露或被篡改的 HTTP 请求方法。这些方法包括:

TRACE: 用于测试服务器的响应。

GET: 用于获取服务器上的资源。

HEAD: 类似于 GET,但不返回资源的主体,只返回元数据。

POST: 用于向服务器提交数据。

PUT: 用于向服务器上的资源位置上放置新内容。

DELETE: 用于从服务器上删除资源。

CONNECT: 用于建立一个隧道以便在服务器和客户端之间传输数据。

OPTIONS: 用于查询服务器的性能。

TRACE: 用于测试服务器的响应。

PROPFIND:用于查询资源的属性

MKCOL:用于在 WebDAV服务器上创建新的资源集合 (通常是文件夹)。

MOVE:用于在 WebDAV服务器上移动资源。

COPY:用于在 WebDAV服务器上复制资源。

PROPPATCH:用于在WebDAV服务器上更新资源的属性。

LOCK:用于在 WebDAV服务器上锁定资源。

UNLOCK:用于在WebDAV服务器上解锁资源。

0X02 不安全的HTTP方法如何发觉

笔者在一次漏洞挖掘的过程中,几乎是习惯性的看了一眼OPTIONS方法,OPTIONS方法很简单,只需要在请求包里直接将GET/POST方法进行替换,即可看到服务器开启了哪些方法
在这里插入图片描述

我们看一下OPTIONS方法能看到哪些内容吧
在这里插入图片描述
我们可以看到,这个系统开放了很多的HTTP方法,而我们接下来就以这些方法为切入点为大家带来讲解

0x3 PROPFIND方法

PROPFIND 是一种 HTTP 请求方法,用于查询资源的属性。它是 WebDAV (Web Distributed Authoring and Versioning) 协议的一部分,用于在 Web 上创建、编辑和管理文档。

使用 PROPFIND 方法,客户端可以请求服务器上的资源的属性列表,也可以请求具体的属性值。服务器响应的状态码为 207 Multi-Status,并在响应主体中包含所请求的属性信息。

例如,客户端可以使用 PROPFIND 方法请求服务器上的文件的创建时间、修改时间和大小等属性。服务器会返回这些信息,客户端可以使用这些信息来更新本地文件列表。
在这里插入图片描述
服务器响应的状态码为 207 Multi-Status,并在响应主体中包含所请求的属性信息。
在这里插入图片描述
我们在此次案例中进行测试,返回的内容并没有我们想要看到的信息
在这里插入图片描述

0X03 PUT 方法​

PUT 是一种 HTTP 请求方法,用于向服务器上的某个资源发送数据,以便修改或替换该资源。

使用 PUT 方法时,客户端向服务器发送 PUT 请求,并在请求主体中包含要发送的数据。

服务器会返回一个状态码来表示操作是否成功。如果文件修改成功,服务器会返回 200 OK /201 Created状态码;如果文件修改失败,则会返回其他状态码,例如 405 Method Not Allowed。​

在这里插入图片描述

如上图所示,我们在网站根路径写下一个1.txt的文件,内容为:​Command=Login&loginfo=a_167323xxxxxxxx97&T=1673231718359

我们访问http://ip/1.txt 返回内容如下
在这里插入图片描述
PUT方法文件写入漏洞与TOMCAT任意文件写入漏洞有异曲同工之妙,利用方式在这里不做过多介绍

0X04 PROPPATCH​方法

PROPPATCH 是一种 HTTP 请求方法,用于在 WebDAV (Web Distributed Authoring and Versioning) 服务器上修改资源的属性。

使用 PROPPATCH 方法时,客户端向服务器发送 PROPPATCH 请求,并在请求主体中包含要修改的属性和新值。
在这里插入图片描述

服务器会返回一个状态码来表示操作是否成功。如果属性修改成功,服务器会返回 207 Multi-Status 状态码;如果属性修改失败,则会返回其他
在这里插入图片描述
我们在这次的案例中进行测试
在这里插入图片描述
在此次测试中,我们尝试修改文件的创建时间,但是失败了

0X05 MOVE方法

MOVE 是一种 HTTP 请求方法,用于在 WebDAV (Web Distributed Authoring and Versioning) 服务器上移动资源。

使用 MOVE 方法时,客户端向服务器发送 MOVE 请求,并在请求中指定要移动的资源和目标位置。

服务器会返回一个状态码来表示操作是否成功。如果文件修改成功,服务器会返回 200 OK / 201 Created状态码;如果文件修改失败,则会返回其他状态码,例如 405 Method Not Allowed。​
在这里插入图片描述
我们在此次实验中进行测试
在这里插入图片描述
我们此时重新访问http://ip/1.txt 我们发现此时已经无法再访问了
在这里插入图片描述
我们访问 http://ip/cgi-bin/1.txt ,我们访问成功了
在这里插入图片描述

0X06 COPY方法

COPY 是一种 HTTP 请求方法,用于在 WebDAV (Web Distributed Authoring and Versioning) 服务器上复制资源。

使用 COPY 方法时,客户端向服务器发送 COPY 请求,并在请求中指定要复制的资源和目标位置。
在这里插入图片描述
服务器会返回一个状态码来表示操作是否成功。如果文件复制成功,服务器会返回 201 Created 状态码;如果文件复制失败,则会返回其他状态码,例如 405 Method Not Allowed。​

在这里插入图片描述
此时我们访问 http://ip/cgi-bin/2.txt 我们访问成功了
在这里插入图片描述

0X07 MKCOL 方法​

MKCOL 是一种 HTTP 请求方法,用于在 WebDAV (Web Distributed Authoring and Versioning) 服务器上创建新的资源集合 (通常是文件夹)。

使用 MKCOL 方法时,客户端向服务器发送 MKCOL 请求,并在请求主体中包含所需的资源集合信息
在这里插入图片描述

如果服务器成功创建了新文件夹,它会返回 201 Created 状态码;如果创建失败,则会返回其他状态码,例如 405 Method Not Allowed。

这里不进行演示哈

0X08 LOCK 方法

LOCK 是一种 HTTP 请求方法,用于在 WebDAV (Web Distributed Authoring and Versioning) 服务器上锁定资源。

使用 LOCK 方法时,客户端向服务器发送 LOCK 请求,并在请求主体中包含锁定信息。服务器会返回一个锁定标识符 (lock token),客户端可以使用该标识符在之后的请求中引用该锁定。我们以锁定900秒进行测试
在这里插入图片描述

服务器会返回一个状态码来表示操作是否成功。如果锁定成功,服务器会返回 200 OK 状态码,并在响应主体中包含锁定令牌。​

接下来我们进行实战演习吧
在这里插入图片描述
芜湖,失败了

0X09 UNLOCK方法

UNLOCK 是一种 HTTP 请求方法,用于在 WebDAV (Web Distributed Authoring and Versioning) 服务器上解锁资源。

使用 UNLOCK 方法时,客户端向服务器发送 UNLOCK 请求,并在请求中包含锁定标识符 (lock token)

在这里插入图片描述

服务器会返回一个状态码来表示操作是否成功。如果解锁成功,服务器会返回 204 No Content 状态码;如果解锁失败,则会返回其他状态码,例如 409 Conflict。

0X10 DELETE 方法

DELETE 是一种 HTTP 请求方法,用于从服务器上删除指定的资源。​使用 DELETE 方法时,客户端向服务器发送 DELETE 请求,并指定要删除的资源。
在这里插入图片描述
服务器会返回一个状态码来表示操作是否成功。如果文件删除成功,服务器会返回 200 OK 状态码;如果文件删除失败,则会返回其他状态码,例如 405 Method Not Allowed。​

我们继续使用我们的测试网站进行测试
在这里插入图片描述
我们访问 http://ip/cgi-bin/2.txt ,我们发现,文件已经被删除了
在这里插入图片描述
我们再次验证,这一次删除1.txt
在这里插入图片描述
我们成功了!
在这里插入图片描述

0X11 TRACE方法

TRACE 是一种 HTTP 请求方法,用于向服务器发送调试信息。

使用 TRACE 方法时,客户端向服务器发送 TRACE 请求,并在请求主体中包含调试信息。服务器会返回原始请求的报文,以便客户端检查是否有任何修改。
在这里插入图片描述
服务器会返回一个状态码来表示操作是否成功。如果调试信息发送成功,服务器会返回 200 OK 状态码;如果调试信息发送失败,则会返回其他状态码,例如 405 Method Not Allowed。

暂时到这里吧

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

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

相关文章

Make RepVGG Greater Again | 中文翻译

性能和推理速度之间的权衡对于实际应用至关重要。而重参化可以让模型获得了更好的性能平衡,这也促使它正在成为现代卷积神经网络中越来越流行的架构。尽管如此,当需要INT8推断时,其量化性能通常太差,无法部署(例如Imag…

SQL BETWEEN 操作符

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。 SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 SQL BETWEEN 语法 SELECT column1, column2, ... FROM table_name WHERE column BETWEEN value1 AND va…

力扣714题 买卖股票的最佳时机含手续费

class Solution {public int maxProfit(int[] prices, int fee) {// 买第一天股票所需要的全部费用(买入)int buy prices[0] fee; // 利润总和int sum 0;for(int p:prices){// 如果买后些天的股票所需的全部费用比第一天的少,就买后边这天的(买入)if(p fee < buy){buy …

【Python】python深拷贝和浅拷贝(一)

【Python】python深拷贝和浅拷贝&#xff08;一&#xff09; 定义 直接赋值&#xff1a;其实就是对象的引用。浅拷贝&#xff1a;拷贝父对象&#xff0c;不会拷贝对象的内部的子对象。深拷贝&#xff1a; copy 模块的 deepcopy 方法&#xff0c;完全拷贝了父对象及其子对象。…

SpringBoot过滤器与拦截器

为什么要有过滤器和拦截器&#xff1f; 在实际开发过程中&#xff0c;经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的&#xff0c;业务方是无需关注的&#xff0c;业务只需…

Ubuntu20.04安装ROS Noetic

一、实验环境准备 1.使用系统:Ubuntu20.04&#xff08;安装不做赘述&#xff0c;可看我另外一篇博客Ubuntu20.04安装&#xff09;&#xff0c;可到Ubuntu官网下载https://ubuntu.com/download/desktop 2.配置网络&#xff0c;使其可通互联网 二、在Ubuntu20.04上搭建ROS机器人…

树上差分-LCA

树上差分算法分析&#xff1a;练习例题差分的基本思想详情见博客&#xff08;一维、二维差分&#xff09;&#xff1a; https://blog.csdn.net/weixin_45629285/article/details/111146240 算法分析&#xff1a; 面向的对象可以是树上的结点&#xff0c;也可以是树上的边 结点…

springmvc 文件上传请求转换为MultipartFile的过程

前言: 最近在研究文件上传的问题,所以就写下这个博客,让大家都知道从流转换为MutipartFile的过程,不然你就知道在方法中使用,而不知道是怎么样处理的,是不行的 从DiaspatherServlet说起: 别问为啥,去了解tomcat和servlet的关系,我后面会 写这篇博客的 servlet的生命周期 ini…

[ 数据结构 ] 查找算法--------线性、二分、插值、斐波那契查找

0 前言 查找算法有4种: 线性查找 二分查找/折半查找 插值查找 斐波那契查找 1 线性查找 思路:线性遍历数组元素,与目标值比较,相同则返回下标 /**** param arr 给定数组* param value 目标元素值* return 返回目标元素的下标,没找到返回-1*/public static int search(…

63.Python 调用类的属性和方法

63.调用类的属性和方法 文章目录63.调用类的属性和方法1. 调用属性的语法2.调用类的方法3.总结1. 调用属性的语法 我们根据类创建了一张奥迪A6的小汽车。根据汽车流水线呢&#xff0c;汽车生产完之后&#xff0c;需要移交给检查部门检查车辆的外观、颜色(属性)等是否与图纸一致…

JavaEE高阶---SpringBoot 统一功能处理

一&#xff1a;什么是SpringBoot 统⼀功能处理 SpringBoot统一功能处理是AOP的实战环节。我们主要学习三方面内容&#xff1a; 统一用户登录权限验证&#xff1b;统一数据格式返回&#xff1b;统一异常处理。 二&#xff1a;统一用户登录权限验证 Spring 中提供了具体的实现…

Scala 集合常用函数

文章目录集合常用函数一、基本属性和常用操作1、常用方法2、案例示例二、衍生集合1、衍生集合常用方法操作2、案例示例三、集合简单计算函数1、常用计算操作2、案例示例四、集合计算高级函数1、语义说明2、案例示例集合常用函数 一、基本属性和常用操作 1、常用方法 (1) 获取…

Release库与Debug库混用导致释放堆内存时产生异常的详细分析

目录 1、问题描述 2、使用Windbg启动Debug版本的exe程序进行分析 3、进一步分析 4、问题复盘 5、为什么Debug库与Release库混用可能会出异常&#xff1f; 6、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;ht…

DM8:dexpdimp-逻辑导出--逻辑导入

DM8:dexp&dimp-逻辑导出--逻辑导入1 dexp逻辑导出dmp文件1.1 全库导出命令附加的参数信息1.2 导出用户所拥有权限的数据库对象-命令附加的参数信息1.3 导出用户所拥有权限的数据库对象-命令附加的参数信息2 dimp--逻辑导入dmp文件2.1 全库导入dmp数据文件-命令附加的参数信…

人体姿态估计-论文精读--DeepPose: Human Pose Estimation via Deep Neural Networks

图 1. 除了关节的极端变异性外&#xff0c;许多关节几乎不可见。我们能猜测左图中右臂的位置&#xff0c;因为我们看到了姿势的其余部分&#xff0c;并预测了这个人的运动或活动。同样&#xff0c;右边的人的左半身也根本看不见。这些都是需要进行整体推理的例子。我们相信DNNs…

php处理支付宝应用网关给接口发送的post参数

php如何接收支付宝应用网关发送的POST请求方式,参数又是GET请求的数据格式配置支付宝应用网关如何接收支付宝异步通知(应用网关接收请求)将&连接的参数分割成数组实例&#xff1a;难点配置支付宝应用网关 首先要在服务器上写一个接口,然后将接口的访问地址设置在支付宝应用…

手把手教Arthas,不再怕排查线上问题了

Arthas是alibaba开源的java诊断工具&#xff0c;支持jdk6&#xff0c;采用命令行交互模式&#xff0c;可以防败的定位和诊断线上的程序运行问题。官方文档&#xff1a;https://arthas.aliyun.com/doc/一、Arthas使用场景是否有一个全局视角来查看系统的运行状况&#xff1f;为什…

六种方式,教你在SpringBoot初始化时搞点事情!

前言 在实际工作中总是需要在项目启动时做一些初始化的操作&#xff0c;比如初始化线程池、提前加载好加密证书....... 那么经典问题来了&#xff0c;这也是面试官经常会问到的一个问题&#xff1a;有哪些手段在Spring Boot 项目启动的时候做一些事情&#xff1f; 方法有很多…

卷积层里的多输入多输出通道、池化层

多输入多通道每个通道都有一个卷积核&#xff0c;结果是所有通道卷积结果的和。无论有多少输入通道&#xff0c;到目前为止我们只用到单输出通道。可以有多个三维卷积核&#xff0c;每个核生成一个输出通道。输出通道数是卷积层的超参数。每个输入通道有独立的二维卷积核&#…

为什么JavaScript这么难学啊?

前言 觉得Js难其实是很正常的&#xff0c;首先这证明你在某些知识点上没有理解透彻&#xff0c;JS挺多的知识点点其实是比较抽象的&#xff0c;比如闭包、原型和原型链等&#xff0c;其次便是不会变通运用&#xff0c;这主要是敲代码熟练度的问题&#xff0c;所以我针对你这种…