最近扫描项目所在的服务器发现一个漏洞,名称叫“远程WWW服务支持TRACE请求”,提供的解决办法没多大用处,只说是“管理员应禁用WWW服务对TRACE请求的支持”,但具体怎样做不太清楚,上网搜了一下,利用apache服务器的rewrite功能,对TRACE请求进行拦截,以下是解决办法。
详细描述 | 远端WWW服务支持TRACE请求。RFC 2616介绍了TRACE请求,该请求典型地用于测试HTTP协议实现。攻击者利用TRACE请求,结合其它浏览器端漏洞,有可能进行跨站脚本攻击,获取敏感信息,比如cookie中的认证信息,这些敏感信息将被用于其它类型的攻击。 |
解决办法 | 管理员应禁用WWW服务对TRACE请求的支持。 IIS URLScan Apache Source Code Modification Mod_Rewrite Module RewriteEngine on RewriteCond {REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] |
步骤:
1、停止Apache服务(以root权限登录)
# cd /usr/IBM/HTTPServer/bin
# ./apachectl stop
[warn] VirtualHost 192.168.0.1:80 overlaps with VirtualHost
192.168.0.1:80, the first has precedence, perhaps you need a
NameVirtualHost directive。
修改配置文件:
解决该问题的方法十分简单,只需通过一条简单的配置文件命令即可开启基于域名的虚拟主机了。我的VPS使用的是CentOS 6.0,在默认的Apache配置文件中的虚拟主机配置节点上面会包含如下基于域名的虚拟主机配置文件。如下所示。
#
# Use name-based virtual hosting.
#
# NameVirtualHost :80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#
注意NameVirtualHost :80这一段,默认情况下是被注释掉的,我们仍然拿上面的那个配置作为例子。假如我们希望将xxx.com和yyy.com同时指向192.168.0.1这个IP地址的话,就需要修改该配置文件。修改好的该片段如下所示。
#
# Use name-based virtual hosting.
#
NameVirtualHost 192.168.0.1:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#
这样就在此IP上开启了基于域名的虚拟主机。需要注意的是,基于域名的虚拟主机必须指定端口号,如:80等,否则无法正常访问。
2、修改httpd.conf文件
# cd /usr/IBM/HTTPServer/conf
编辑httpd.conf文件
# 首先,激活rewrite模块(去掉符号#)
LoadModule rewrite_module modules/mod_rewrite.so
# 启用Rewrite引擎
RewriteEngine On
# 对Request中的Method字段进行匹配:^TRACE 即以TRACE字符串开头
RewriteCond %{REQUEST_METHOD} ^TRACE
# 定义规则:对于所有格式的来源请求,均返回[F]-Forbidden响应
RewriteRule .* - [F]
对于2.0.55以上版本的apache服务器,有一种更简单的办法:
TraceEnable off
3、启动Apache服务(以root权限登录)
# cd /usr/IBM/HTTPServer/bin
# ./apachectl start
测试:ping IP
tracert Ip
vi 到文件末尾命令 :$
vi到文件头 :1