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

前言:

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

  今天的这篇文章是笔者最近做漏洞挖掘的时候,无意中捡到的漏洞,这个漏洞就是典型的--服务器开启了不安全的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。

暂时到这里吧

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
HTTP方法是客户端与服务器之间进行通信的一种方式,包括GET、POST、PUT、DELETE等多种方法。其中,GET方法用于从服务器获取资源,而POST方法则用于向服务器发送表单数据等信息。但是,有些HTTP方法具有安全风险,如果服务器没有正确地限制这些方法的使用,就可能导致不必要的风险和漏洞。 启动了不安全HTTP方法漏洞是指,服务器在处理客户端请求时启用了不安全HTTP方法(如PUT、DELETE等),却没有对请求进行正确的验证和授权。这就给攻击者提供了机会,利用这些方法访问、修改或删除服务器上的数据,从而造成安全风险和漏洞。 具体来说,启用安全HTTP方法可能导致以下危害: 1. 数据泄露:攻击者可以使用PUT或其他HTTP方法将恶意代码或程序上传到服务器,从而获取服务器上的敏感信息。 2. 文件覆盖:攻击者可以使用PUT或其他HTTP方法将某些文件覆盖掉,这些文件可能是关键的系统文件,会导致系统崩溃或不可用。 3. 恶意文件上传:攻击者可能利用PUT和其他HTTP方法上传恶意文件(如病毒、木马等)到服务器上,从而进行远程操作和控制。 因此,为了防止不安全HTTP方法漏洞,服务器必须正确地限制这些方法的使用,同时对请求进行正确的验证和授权。此外,管理员还需要注意定期更新服务器软件以及安装最新的安全补丁,以避免已知漏洞造成的安全风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值