不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

 漏洞问题处理,漏洞信息,远端WWW服务支持TRACE请求

问题描述

  • TRACE 方法 是 HTTP/1.1 协议定义的调试方法,用于回显客户端发送的请求,帮助诊断问题。
  • 攻击者可利用它:
    • 绕过同源策略(Same-Origin Policy)
    • 窃取用户的 Cookie(尤其是未设置 HttpOnly 的 Cookie)
    • 实施 XSS 或 XST 攻击
  • 修复原则:在生产环境中禁用 TRACE 方法,除非有特殊调试需求。

修复方案(按 Web 服务器类型)

1. Apache HTTP Server

方法一:使用 TraceEnable off(推荐)

编辑 Apache 配置文件(通常是 httpd.confapache2.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 管理器图形界面

  1. 打开 IIS 管理器
  2. 选择目标网站 → 双击 “请求筛选”(Request Filtering)
  3. 切换到 “HTTP 方法” 选项卡
  4. 找到 TRACE 方法,右键 → “拒绝”
  5. 点击“应用”

方法二:修改 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