Web缓存投毒对Cookie处理漏洞攻击实践
Cookies通常用于在响应中动态生成内容。一个常见的示例可能是cookie,它指示用户的首选语言,然后将其用于加载页面的相应版本:
GET /blog/post.php?mobile=1 HTTP/1.1
Host: innocent-website.com
User-Agent: Mozilla/5.0 Firefox/57.0
Cookie: language=zh;
Connection: close
在此示例中,要求提供博客文章的汉语版本。假设缓存键仅包含请求行和 Host
标头。这意味着有关使用哪种语言版本的信息仅包含在 unkeyed
的 Cookie
标头中。如果对该请求的响应被缓存,那么所有尝试访问此博客文章的后续用户也将获得汉语版本,无论他们实际选择哪种语言。
使用Web缓存中毒技术还可以利用缓存对Cookie的这种错误处理。但是实际上,与基于头的缓存中毒相比,这种攻击相对较少。当存在基于cookie的缓存中毒漏洞时,由于合法用户无意中毒了缓存,因此往往可以快速识别并解决它们。
攻击步骤
先对浏览器设置bp的代理,然后打开存在漏洞的网站,下面这个就是网站的首页:
然后我们可以在bp中看到我们请求网站的 http history
,下面框住的是我们对网站首页的