web安全/渗透测试--10--不安全的HTTP方法

#3.9 不安全的HTTP方法

1、漏洞描述:

不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY等。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以利用该方法进行跨站跟踪攻击(即XST攻击),从而进行网站钓鱼、盗取管理员cookie等。其他说明方式如下所示:

方法 解释
PUT 向指定的目录上传文件
DELETE 删除指定的资源
COPY 将指定的资源复制到Destination消息头指定的位置
MOVE 将指定的资源移动到Destination消息头指定的位置
CONNECT 客户端使用Web服务器作为代理
PROPFIND 获取与指定资源有关的信息,如作者、大小与内容类别
TRACE 在响应中返回服务器收到的原始请求
DEAD 返回报文的头部
OPTIONS 客户端询问服务器可以提交哪些请求方法
GET 获取服务器资源
POST 传输实体文本

2、检测方法

1、使用抓包软件抓取数据包
2、拦截数据包,将HTTP方法修改为GET、POST、HEAD、PUT、DELETE、TRACE等
3、分别发送数据包到服务器
4、查看每种HTTP方法的返回结果。如果服务器完全忽略请求或者返回错误,则该项是安全的。如果服务器有其他任何返回,则服务器响应了不必要的方法,是不安全的。注意:GET和POST响应是正常的,其他的不正常。

3、修复方案
以下为针对不安全的HTTP方法中的TRACE相关的修复建议:

1、中间件为apache服务器

a、利用apache服务器的rewrite功能,对TRACE请求进行拦截。编辑httpd.conf文件增加下面内容:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

b、更详细的解释如下:
LoadModule rewrite_module modules/mod_rewrite.so     #首先激活rewrite模块
RewriteEngine On                                     #启用Rewrite引擎
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)         #对Request中的Method字段进行匹配:^TRACE 即以TRACE字符串开头
RewriteRule .* - [F]                                 #定义规则:对于所有格式的来源请求,均返回[F]-Forbidden响应。

c、对于1.3.34以上和2.0.55以上版本的apache服务器,配置文件增加:TraceEnable off

d、或者用如下方法:

e、在项目或tomcat下的web.xml中,添加如下配置:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>任意名称web-resource-name>
        <url-pattern>/*url-pattern>
        <http-method>PUThttp-method>
        <http-method>DELETEhttp-method>
        <http-method>HEADhttp-method>
        <http-method>OPTIONShttp-method>
        <http-method>TRACEhttp-method>
	web-resource-collection>
	<auth-constraint>auth-constraint>
security-constraint>
<login-config>
	<auth-method>BASICauth-method>
login-config>

2、中间件为Microsoft IIS
如果你使用的是Microsoft IIS,使用URLScan工具禁用HTTP TRACE请求,或者只开放满足站点需求和策略的方式。安装URLScan(URLScan是微软提供给IIS6的路径重定向工具。
在这里下载: http://www.iis.net/learn/extensions/working-with-urlscan/urlscan-3-reference),在URLScan.ini中配置,只允许GET、HEAD和POST这三个常用命令(UseAllowVerbs=1)。

3、中间件为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>

4、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

4、其他说明
由于不同的Web服务器支持的HTTP协议版本不同,如果系统不支持HTTP/1.0,那么步骤4返回“HTTP/1.0 400 Bad Request”;这种情况下,应该更改步骤4的输入行为OPTIONS / HTTP/1.0

你可能感兴趣的:(web安全/渗透测试)