一、背景介绍
apache的httpd web服务器默认开启了http的trace与track方法,这些方法是存在安全风险的,它们会产生跨站点跟踪问题。HTTP TRACK方法是微软编写的,与TRACE的功能基本相同,除了渗透测试人员,黑客,蠕虫和漏洞扫描程序之外,它从未被使用过。
XSS漏洞是一种低风险漏洞,是全球网络中最常见的漏洞之一。这个问题至少从1990年开始出现,是高频率和高可见性的漏洞。
HTTP TRACE要求Web服务器将请求的内容回送给客户端。完整请求(包括HTTP标头,可包括cookie或身份验证数据等敏感信息)将在TRACE响应的实体主体中返回。该请求主要由开发人员用于测试和调试HTTP应用程序,并且在大多数Web服务器软件中默认可用。
二、验证跟踪
使用telnet工具进行漏洞验证:
打开telnet应用程序并通过端口80(telnet <hostname> <port>)连接到目标网站web开放端口,微软telnet客户端,不回显输入的内容,在linux下使用telnet可以更加方便的进行验证。
连接成功后,键入以下内容:
trace验证:
三、漏洞利用
创建一个网页,其中包含一些包含TRACE请求的JavaScript。然后,JavaScript可以利用访问者浏览器中的任何跨域漏洞来收集任何网站的缓存凭据,包括那些使用SSL的网站。
更常见的方法是使用包含TRACE请求的JavaScript代码段并将其注入易受攻击的Web应用程序。JavaScript将能够发送受害者的请求标头,包括标记为“httpOnly”的cookie数据给攻击者。“httpOnly”是添加到cookie的额外参数,它隐藏了来自脚本的cookie,并且在大多数浏览器中都受支持; 但是,TRACE方法可用于绕过此保护。
四、关闭漏洞方法及步骤
1、方法一、通过TraceEnable开关实现
在httpd的配置文件httpd.conf中加入一行:
TraceEnable=off
保存配置文件后退出重新启动httpd
systemctl restart httpd
2、方法二、通过mod_rewrite模块实现
加载mod_rewrite模块创建一个mod_rewrite规则,该mod_rewrite.so模块默认位置在/usr/local/apache目录下,首先在httpd.conf配置文件中通过下面的语句加载该模块:
LoadModule rewrite_module“/usr/local/apache/modules/mod_rewrite.so”
然后将以下内容添加到httpd.conf文件中:
RewriteEngine On
RewriteCond%{REQUEST_METHOD} ^(TRACE | TRACK)
RewriteRule。* - [F]
默认情况下,不会跨虚拟服务器继承重写配置。将RewriteEngine On添加到每个虚拟主机上。重新启动apache服务。
systemctl restart httpd
五、再次重复第二步的方法对漏洞进行验证,发现漏洞已经被修补成功