漏洞问题处理,漏洞信息,远端WWW服务支持TRACE请求
问题描述
- TRACE 方法 是 HTTP/1.1 协议定义的调试方法,用于回显客户端发送的请求,帮助诊断问题。
- 攻击者可利用它:
- 绕过同源策略(Same-Origin Policy)
- 窃取用户的 Cookie(尤其是未设置
HttpOnly的 Cookie) - 实施 XSS 或 XST 攻击
- 修复原则:在生产环境中禁用 TRACE 方法,除非有特殊调试需求。
修复方案(按 Web 服务器类型)
1. Apache HTTP Server
方法一:使用 TraceEnable off(推荐)
编辑 Apache 配置文件(通常是 httpd.conf 或 apache2.conf):
# 全局禁用 TRACE 方法
TraceEnable off
说明:这是 Apache 2.0+ 提供的专用指令,最简单安全。
方法二:使用 mod_rewrite 模块禁用
如果 TraceEnable 不可用,可通过重写规则拦截:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] </IfModule>
效果:任何 TRACE 请求返回
403 Forbidden。
重启服务
# Linux 系统
sudo systemctl restart apache2
# 或
sudo service httpd restart
2. Nginx
Nginx 默认不支持 TRACE 方法,会返回 405 Not Allowed。但为确保安全,可显式拒绝:
在 server 块中添加:
server { listen 80; server_name your-domain.com; # 显式拒绝 TRACE 和 TRACK 方法 if ($request_method ~ ^(TRACE|TRACK)$ ) { return 405; } # 其他配置... }
405表示方法不允许。
重载配置
sudo nginx -t # 测试配置
sudo nginx -s reload # 重载
3. Microsoft IIS (Internet Information Services)
方法一:通过 IIS 管理器图形界面
- 打开 IIS 管理器
- 选择目标网站 → 双击 “请求筛选”(Request Filtering)
- 切换到 “HTTP 方法” 选项卡
- 找到
TRACE方法,右键 → “拒绝” - 点击“应用”
方法二:修改 web.config 文件
在网站根目录的 web.config 中添加:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<verbs>
<add verb="TRACE" allowed="false" />
<add verb="TRACK" allowed="false" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
</configuration>
无需重启 IIS,配置立即生效。
4. Tomcat
编辑 conf/web.xml 文件,在 <servlet> 配置中找到 DefaultServlet,添加:
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
注意:Tomcat 的 TRACE 由
DefaultServlet处理,设置readonly=true可禁用 TRACE 和 PUT、DELETE 等方法。
或者,使用 Valve 组件在 server.xml 中限制:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" denyMethods="TRACE" />
验证是否修复成功
使用 curl 命令测试:
curl -X TRACE http://your-server-ip-or-domain/
预期结果:
- 返回
405 Method Not Allowed - 或
403 Forbidden - 或直接拒绝连接
如果返回 200 OK 并回显请求头,则仍未修复。
总结
| 服务器 | 修复方式 |
|---|---|
| Apache | TraceEnable off 或 mod_rewrite |
| Nginx | if ($request_method ~ ^TRACE) 返回 405 |
| IIS | 请求筛选中禁用 TRACE,或修改 web.config |
| Tomcat | 设置 readonly=true 或使用 Valve |
浙公网安备 33010602011771号