每日漏洞 | 不安全的HTTP方法
字数 1412 2025-08-18 11:38:32

不安全的HTTP方法漏洞详解与防护指南

一、HTTP方法概述

HTTP协议定义了一组请求方法,用于对资源执行不同的操作:

安全方法(Safe Methods)

  • GET:获取资源
  • HEAD:获取资源头信息
  • OPTIONS:查询资源支持的方法
  • TRACE:回显请求(用于测试)

不安全方法(Unsafe Methods)

  • PUT:上传/更新资源
  • DELETE:删除资源
  • PATCH:部分修改资源(RFC 5789)
  • WebDAV扩展方法:
    • COPY:复制资源
    • MOVE:移动资源
    • PROPFIND:获取属性
    • PROPPATCH:修改属性
    • MKCOL:创建集合
    • LOCK:锁定资源
    • UNLOCK:解锁资源

注意:安全方法并非绝对安全,如使用GET传输敏感数据仍可能导致安全问题。

二、不安全HTTP方法的风险

  1. PUT方法风险

    • 允许攻击者上传恶意文件
    • 可能覆盖现有重要文件
    • 结合COPY/MOVE方法可修改文件位置和类型
  2. DELETE方法风险

    • 允许攻击者删除服务器重要文件
    • 可能导致服务中断或数据丢失
  3. TRACE方法风险

    • 可能导致跨站追踪攻击(XST)
    • 可能泄露敏感头信息(如Cookie)
  4. WebDAV方法风险

    • 提供过多文件系统操作权限
    • 可能被利用进行服务器配置篡改

三、漏洞检测方法

1. 查询支持的方法

使用OPTIONS方法检测:

OPTIONS / HTTP/1.1
Host: example.com

响应分析

  • 检查AllowPublic头字段
  • 示例响应:
    HTTP/1.1 200 OK
    Allow: GET, POST, PUT, DELETE, OPTIONS
    

2. 验证方法实际支持情况

TRACE方法验证

TRACE / HTTP/1.1
Host: example.com
  • 如果返回请求内容,则支持TRACE
  • 如果不支持,通常返回405 Method Not Allowed

PUT/DELETE方法验证

  1. 使用PUT上传测试文件:

    PUT /testfile.txt HTTP/1.1
    Host: example.com
    Content-Length: 11
    
    test content
    
    • 成功返回201 Created
    • 已有资源返回204 No Content
  2. 使用DELETE删除测试文件:

    DELETE /testfile.txt HTTP/1.1
    Host: example.com
    
    • 成功返回200 OK或204 No Content

重要原则:测试PUT/DELETE时务必使用测试文件,避免影响生产环境。

四、漏洞修复方案

1. 服务器配置禁用

Apache配置

<Location "/">
    <LimitExcept GET POST HEAD OPTIONS>
        Deny from all
    </LimitExcept>
</Location>

Nginx配置

location / {
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) {
        return 405;
    }
}

IIS配置

  1. 打开IIS管理器
  2. 选择站点 → 请求过滤
  3. 添加不允许的动词:PUT, DELETE, TRACE等

2. Web应用层防护

Java Web (web.xml)

<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
        <http-method>PUT</http-method>
        <http-method>DELETE</http-method>
        <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
</security-constraint>

ASP.NET (web.config)

<system.webServer>
    <security>
        <requestFiltering>
            <verbs allowUnlisted="true">
                <add verb="PUT" allowed="false"/>
                <add verb="DELETE" allowed="false"/>
                <add verb="TRACE" allowed="false"/>
            </verbs>
        </requestFiltering>
    </security>
</system.webServer>

3. 中间件防护

使用WAF规则

  • 拦截包含危险HTTP方法的请求
  • 示例规则:
    SecRule REQUEST_METHOD "^(PUT|DELETE|TRACE)$" "id:10001,phase:1,deny,status:405,msg:'Unsafe HTTP method detected'"
    

五、最佳实践建议

  1. 最小权限原则

    • 只开放业务必需的方法
    • 默认禁用所有不必要方法
  2. 定期安全审计

    • 使用自动化工具扫描HTTP方法支持情况
    • 人工验证关键接口
  3. 敏感操作保护

    • 对必须使用的PUT/DELETE方法实施严格认证
    • 添加CSRF防护
    • 记录操作日志
  4. WebDAV服务

    • 非必要不启用WebDAV
    • 如必须使用,限制访问IP并启用强认证
  5. TRACE方法

    • 生产环境应始终禁用
    • 测试环境使用后及时关闭

六、测试工具推荐

  1. Burp Suite

    • 使用Repeater模块手动测试
    • 使用Scanner自动检测
  2. Nmap脚本

    nmap --script http-methods <target>
    
  3. curl命令

    curl -X OPTIONS http://example.com -I
    curl -X TRACE http://example.com
    
  4. OWASP ZAP

    • 自动扫描不安全HTTP方法
    • 提供详细报告

通过全面了解不安全的HTTP方法及其风险,实施适当的检测和防护措施,可以有效提升Web应用的安全性,防止攻击者利用这些方法危害系统。

不安全的HTTP方法漏洞详解与防护指南 一、HTTP方法概述 HTTP协议定义了一组请求方法,用于对资源执行不同的操作: 安全方法(Safe Methods) GET :获取资源 HEAD :获取资源头信息 OPTIONS :查询资源支持的方法 TRACE :回显请求(用于测试) 不安全方法(Unsafe Methods) PUT :上传/更新资源 DELETE :删除资源 PATCH :部分修改资源(RFC 5789) WebDAV扩展方法: COPY:复制资源 MOVE:移动资源 PROPFIND:获取属性 PROPPATCH:修改属性 MKCOL:创建集合 LOCK:锁定资源 UNLOCK:解锁资源 注意 :安全方法并非绝对安全,如使用GET传输敏感数据仍可能导致安全问题。 二、不安全HTTP方法的风险 PUT方法风险 : 允许攻击者上传恶意文件 可能覆盖现有重要文件 结合COPY/MOVE方法可修改文件位置和类型 DELETE方法风险 : 允许攻击者删除服务器重要文件 可能导致服务中断或数据丢失 TRACE方法风险 : 可能导致跨站追踪攻击(XST) 可能泄露敏感头信息(如Cookie) WebDAV方法风险 : 提供过多文件系统操作权限 可能被利用进行服务器配置篡改 三、漏洞检测方法 1. 查询支持的方法 使用OPTIONS方法检测: 响应分析 : 检查 Allow 或 Public 头字段 示例响应: 2. 验证方法实际支持情况 TRACE方法验证 : 如果返回请求内容,则支持TRACE 如果不支持,通常返回405 Method Not Allowed PUT/DELETE方法验证 : 使用PUT上传测试文件: 成功返回201 Created 已有资源返回204 No Content 使用DELETE删除测试文件: 成功返回200 OK或204 No Content 重要原则 :测试PUT/DELETE时务必使用测试文件,避免影响生产环境。 四、漏洞修复方案 1. 服务器配置禁用 Apache配置 : Nginx配置 : IIS配置 : 打开IIS管理器 选择站点 → 请求过滤 添加不允许的动词:PUT, DELETE, TRACE等 2. Web应用层防护 Java Web (web.xml) : ASP.NET (web.config) : 3. 中间件防护 使用WAF规则 : 拦截包含危险HTTP方法的请求 示例规则: 五、最佳实践建议 最小权限原则 : 只开放业务必需的方法 默认禁用所有不必要方法 定期安全审计 : 使用自动化工具扫描HTTP方法支持情况 人工验证关键接口 敏感操作保护 : 对必须使用的PUT/DELETE方法实施严格认证 添加CSRF防护 记录操作日志 WebDAV服务 : 非必要不启用WebDAV 如必须使用,限制访问IP并启用强认证 TRACE方法 : 生产环境应始终禁用 测试环境使用后及时关闭 六、测试工具推荐 Burp Suite : 使用Repeater模块手动测试 使用Scanner自动检测 Nmap脚本 : curl命令 : OWASP ZAP : 自动扫描不安全HTTP方法 提供详细报告 通过全面了解不安全的HTTP方法及其风险,实施适当的检测和防护措施,可以有效提升Web应用的安全性,防止攻击者利用这些方法危害系统。