HTTP Verb Tampering利用接受 HTTP 动词和方法的 Web 服务器。可以通过使用意外方法发送恶意请求来利用此攻击,这可能导致绕过 Web 应用程序的授权机制,甚至绕过其针对其他 Web 攻击的安全控制。
HTTP 有9 种不同的动词,常用的 HTTP Verb
Verb | Description |
---|---|
GET |
请求特定资源。可以通过 URL 中的查询字符串将附加数据传递给服务器(例如?param=value )。 |
POST |
将数据发送到服务器。它可以处理多种类型的输入,例如文本、PDF 和其他形式的二进制数据。此数据附加在标头后面的请求正文中。POST 方法通常用于发送信息(例如表单/登录)或将数据(例如图像或文档)上传到网站。 |
HEAD |
请求向服务器发出 GET 请求时返回的标头。它不返回请求正文,通常用于在下载资源之前检查响应长度。 |
PUT |
在服务器上创建新资源。如果在未进行适当控制的情况下允许此方法,则会导致上传恶意资源。 |
DELETE |
删除 Web 服务器上的现有资源。如果没有得到妥善保护,可能会因删除 Web 服务器上的关键文件而导致拒绝服务 (DoS)。 |
OPTIONS |
返回有关服务器的信息,例如其接受的方法。 |
PATCH |
对指定位置的资源应用部分修改。 |
TRACE |
回显服务器收到的请求,主要用于测试或诊断。 |
CONNECT |
HTTP/1.1协议中预留给能够将连接改为隧道方式的代理服务器。通常用于SSL加密服务器的连接(经由非加密的HTTP代理服务器)。 |
Insecure Configurations
Web 服务器的身份验证配置可能仅限于特定的 HTTP 方法,这会导致某些 HTTP 方法无需身份验证即可访问。
Apache Web
Apache Web 服务器存在漏洞的配置示例,该配置位于站点配置文件(例如 000-default.conf
)或 .htaccess
网页配置文件中:
1 | <Directory "/var/www/html/admin"> |
此配置正在设置管理 Web 目录的授权配置。但是,由于使用了 <Limit GET>
关键字,Require valid-user
设置仅适用于 GET 请求,因此页面只能通过 POST
请求访问。即使同时指定了 GET
和 POST
,页面也只能通过其他方法访问,例如 HEAD
或 OPTIONS
。