一、常见的HTTP请求方法如下
- GET:Get长度限制为1024,特别快,不安全,在URL里可见,URL提交参数以 ?分隔,多个参数用 & 连接,请求指定的页面信息,并返回实体主体。
- HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
- POST:长度一般无限制,由中间件限制,较慢,安全,URL里不可见。请求的参数在数据包的请求body中。
- PUT:向指定资源位置上传其最新内容。
- DELETE:请求服务器删除指定的页面。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向WEB服务器发送’*'的请求来测试服务器的功能性。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
如下图展示:
二、请求方式安全隐患
- PUT:由于PUT方法自身不带验证机制,利用PUT方法可以向服务器上传文件,所以恶意攻击者可以上传木马等恶意文件。
- DELETE:利用DELETE方法可以删除服务器上特定的资源文件,造成恶意攻击。
- OPTIONS:将会造成服务器信息暴漏,如中间件版本、支持的HTTP方法等。
- TRACE:可以回显服务器上收到的请求,主要用于测试或诊断,一般都会存在反射型跨站漏洞(XSS漏洞)
三、渗透攻击检测
使用OPTIONS方法列出服务器使用的HTTP方法。注意,不同目录中激活的方法可能各有不同。 有时被告知一些方法有效,但实际上它们并不能使用,有时即使OPTIONS请求返回的响应中没有列出某个方法,但该方法仍然可用。
- 手动测试每一个方法是否可用,使用CURL发送OPTIONS请求,查看响应头部分
curl -I -X OPTIONS https://X.X.X.X
- 使用burp工具进行查看
- nc.exe –nvv IP 端口 (其中IP和端口按实际状况填写,用空格隔开)
回车 在新行中输入以下一行,并回车 OPTIONS / HTTP/1.1 存在响应体中Allow 字段或其他显示请求方法的字段 中存在以上请求方式,均会对目标应用系统造成影响!
攻击手段这里不做过多介绍,大家自行百度!!!
四、修复方案
禁用OPTIONS 不安全的HTTP请求方法!
以下针对不安全的HTTP方法中的TRACE相关的修复建议:
-
中间件为Apache服务器 更多详细介绍: LoadModule rewrite_module modules/mod_rewrite.so #首先激活rewrite模块 RewriteEngine On #启用Rewrite引擎 RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) #对Request中的Method字段进行匹配:^TRACE 即以TRACE字符串开头 RewriteRule .* - [F] #定义规则:对于所有格式的来源请求,均返回[F]-Forbidden响应。 或参考如下方法: -
中间件为Microsoft IIS -
中间件为Sun ONE Web Server releases 6.0 若是你使用的是Sun ONE Web Server releases 6.0 SP2 或者更高的版本, 在obj.conf文件的默认object section里添加下面的语句:
<Client method="TRACE">
AuthTrans fn="set-variable"
remove-headers="transfer-encoding"
set-headers="content-length: -1"
error="501"
</Client>
-
中间件为Sun ONE Web Server releases 6.0 SP2 若是你使用的是Sun ONE Web Server releases 6.0 SP2 或者更低的版本, 编译以下地址的NSAPI插件: http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F50603
|