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相关的修复建议:
3.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
或者用如下方法:
<!-- 关闭不安全的HTTP方法-->
<security-constraint>
<web-resource-collection>
<web-resource-name>任意名称</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
3.2、中间件为Microsoft IIS
如果你使用的是Microsoft IIS,使用URLScan工具禁用HTTP TRACE请求,或者只开
放满足站点需求和策略的方式。安装URLScan(URLScan是微软提供给IIS6的路径
重定向工具,在这里下载: http://www.iis.net/learn/extensions/working-withurlscan/
urlscan-3-reference),在URLScan.ini中配置,只允许GET、HEAD和POST
这三个常用命令(UseAllowVerbs=1)
3.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>
3.4、Sun ONE Web Server releases 6.0 SP2
如果你使用的是Sun ONE Web Server releases 6.0 SP2或者更低的版本,编译如下
地址的NSAPI插件:http://sunsolve.sun.com/pubcgi/retrieve.pl?doc=fsalert%2F50603
4.其他说明
由于不同的Web服务器支持的HTTP协议版本不同,如果系统不支持HTTP/1.0,那么
步骤4返回“HTTP/1.0 400 Bad Request”;这种情况下,应该更改步骤4的输入行
为OPTIONS / HTTP/1.0