漏洞名称:不安全的HTTP方法、危险的HTTP方法
漏洞描述:不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY 等。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以利用该方法进行跨站跟踪攻击(即XST攻击),从而进行网站钓鱼、盗取管理员cookie等。 其他说明方式如图所示:
检测条件:
1、 已知Web网站IP地址及Web访问端口
2、 Web业务正常运行
检测方法:
1、 点击‚开始‛-‚运行‛,输入cmd并回车,运行nc.exe
2、 输入nc.exe –nvv
IP 端口 (其中IP和端口按实际情况填写,用空格隔开)
3、 回车
4、 在新行中输入如下一行,并回车
OPTIONS / HTTP/1.1
5、 观察返回结果中的Allow的方法列表
返回结果样例:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.5.GA (build: CVSTag=Branch_4_0
date=200610162339)/Tomcat-5.5
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Content-Length: 0
Date: Mon, 29 Jun 2009 08:02:47 GMT
Connection: close
如果返回结果中包含不安全的HTTP方法(DELETE、PUT、TRACE、MOVE、COPY),则验证这些请求方法是否可用.
6、 如果方法可用则说明存在漏洞,如图所示为检测到的trace方法:
由于不同的Web服务器支持的HTTP协议版本不同,如果系统不支持HTTP/1.0,那么步骤4返回
‚HTTP/1.0 400 Bad Request‛;这种情况下,应该更改步骤4的输入行为OPTIONS / HTTP/1.1
修复方案:
1、 中间件为apache服务器:
利用 apache 服务器的 rewrite 功能,对 TRACE 请求进行拦截。编辑 httpd.conf 文件增加下
面内容:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
更详细的解释如下:
LoadModule rewrite_module modules/mod_rewrite.so # 首先,激活 rewrite 模块
RewriteEngine On # 启用 Rewrite 引擎
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) # 对 Request 中的 Method 字段进行匹配:
^TRACE 即以 TRACE 字符串开头
RewriteRule .* - [F] # 定义规则:对于所有格式的来源请求,均返回[F]-Forbidden
响应。
对于 1.3.34 以上和 2.0.55 以上版本的 apache 服务器,配置文件增加:TraceEnable off
或者用如下方法:
在项目或 tomcat 下的 web.xml 中,添加如下配置:
<!-- 关闭不安全的 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>
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