所有文章 > API安全 > Web 攻击:HTTP 动词篡改简介
Web 攻击:HTTP 动词篡改简介

Web 攻击:HTTP 动词篡改简介

在互联网发展的早期,你必须先输入“http://”才能输入网站的网址。从这个意义上说,重定向让我们的生活变得更轻松,但 HTTP(超文本传输​​协议)仍然在网络上的应用程序中扮演着不可或缺的角色。由于这种用于传输超媒体文档(如 HTML 以呈现页面)的应用层协议非常常见,因此它也是网络犯罪分子常用的攻击媒介。

什么是 HTTP 动词?

HTTP 动词指定服务器应如何处理 URL 标识的数据。它们通常被称为“HTTP 方法”,之所以被称为动词,是因为它们只是简单的动作。

Web 服务器接受许多不同的 HTTP 动词,但一些最常见的实例是:

  • GET– 返回指定资源的表述。仅检索数据。
  • POST– 将实体提交给指定的资源,通常会导致状态改变或服务器产生副作用。
  • PUT– 将请求负载写入指定位置。
  • PATCH– 对现有资源进行部分更改。
  • DELETE– 删除指定位置的资源。

传统上,GET 和 POST 是两个最常用的 HTTP 动词。例如,当您想要访问 Google 等网站时,您正在执行 GET HTTP 动词,将数据从网站检索到您的设备。

执行 POST HTTP 动词通常表现为在网站上的表单中输入信息。您正在向 Web 服务器上“发布”新数据或状态更改。

标准样式的链接会触发 GET 请求,而使用“POST”方法提交的表单会触发 POST 请求。如果没有 HTTP 动词,表单默认通过 GET 发送数据。

如您所见,更改 HTTP 动词输入并不困难。一旦发现 HTTP 配置存在漏洞,攻击者就可以轻松执行 DELETE 等敏感功能。

HTTP 动词篡改如何工作?

HTTP 动词篡改攻击利用 HTTP 方法的身份验证和访问控制机制中的漏洞。

最常见的 HTTP 方法允许以有限的安全性进行访问,因为这就是身份验证机制的目的。最初,需要身份验证的网站仅通过密码保护就被视为安全。随着网络变得越来越智能,网络犯罪分子也变得越来越聪明。由于大多数 HTTP 动词都不是完全安全的,因此篡改就像操纵受密码保护的区域一样简单,从而允许未经授权访问受限资源。

HTTP 动词篡改通常是由 Web 应用程序或后端服务器中的安全设置配置错误引起的。攻击者将利用此漏洞绕过身份验证并访问敏感数据,只需更改请求方法即可操纵或删除数据。

常见攻击场景

  • 不安全的默认配置:分析您的任何端点是否在开箱即用的设置下运行,并默认允许使用所有 HTTP 动词。
  • 将 HTTP 动词存储在 URL 字符串中:如果 URL 字符串中存储了允许的 HTTP 动词,攻击者可以提取这些动词。请确保您的 URL 不包含可让 URL 轻易被操纵的 HTTP 动词。
  • 使用隐藏字段存储状态信息:隐藏字段在设计时可能很棒并且易于使用,但攻击者可以通过检查网页轻松读取这些隐藏字段,然后篡改其中的信息。
  • 中间人攻击:两台服务器未加密地进行通信,这使得攻击者可以拦截和监控流量和通信。
  • API 端点缺乏授权和认证s:API 漏洞通常是由于授权和身份验证控制不足造成的。攻击者可以入侵受单层身份验证保护的帐户,并利用缺乏检查来泄露信息。
  • 不安全的编码:Web 开发人员通常会应用特定的过滤器来缓解编写的代码中的特定漏洞,但如果不将这些过滤器应用于所有 HTTP 动词,则会导致代码不安全。
  • 在客户端和服务器之间传输的 HTTP 动词:攻击者劫持在客户端和服务器之间传递的消息来调整 HTTP 动词。

如何对抗 HTTP 动词篡改漏洞

您应该立即采取一些措施来防止 HTTP 动词被篡改。

  • 检查配置:确保您的代码未在安全配置中设置为“允许所有”。否则,攻击者可以在请求中使用其他 HTTP 动词(如 HEAD)或任意字符串来获取访问权限。
  • 测试渗透测试 (或笔测试) 涉及模拟对 HTTP 动词的攻击场景,以在 HTTP 动词被利用之前寻找可能导致 HTTP 动词篡改的漏洞。如果您定期进行渗透测试,检查修改数据或请求走私等问题将有助于防止以后发生任何问题。确保不仅包括它们是否可以访问,还包括一旦授予访问权限后可能发生的情况。
  • 流程自动化:自动化可以全面节省时间和资源。自动化渗透测试意味着可以进行更高质量的分析,以发现潜在漏洞并防患于未然。

文章来源:Web Attacks: Intro to HTTP Verb Tampering

#你可能也喜欢这些API文章!