# 浏览器驱动的请求伪造

在本节中，你将了解如何在不依赖浏览器永不会发送畸形请求的情况下进行高危漏洞利用。这不仅使得更多的网站暴露于服务器端请求走私的威胁下，还使你能够通过诱使受害者的浏览器毒害自己与存在漏洞的Web服务器之间的连接，从而执行这些攻击的客户端变种。

> **PortSwigger Research**
>
> 本节中的材料和实验基于PortSwigger Research的《[浏览器驱动的异步攻击：HTTP请求走私的新前沿](https://portswigger.net/research/browser-powered-desync-attacks)》。这项研究导致还发现了一种利用连接状态缺陷绕过Host标头过滤的技术。

## CL.0 请求走私

后端服务器有时可能被说服忽略`Content-Length`标头，这实际上意味着它们忽略传入请求的正文。这将为不依赖于分块传输编码或HTTP/2降级的请求走私攻击铺平了道路。

> **了解更多**
>
> * **学习**：[CL.0请求走私](https://web-sec.gitbook.io/wsa/advanced/request-smuggling/browser/cl-0)
> * **LAB**：[CL.0请求走私](https://portswigger.net/web-security/request-smuggling/browser/cl-0/lab-cl-0-request-smuggling)

## 客户端异步攻击

请求走私传统上被认为是一个服务器端问题，因为它只能使用像Burp Repeater这样的专业工具来利用——标准浏览器根本不会发送触发异步所需的请求类型。然而，借鉴从CL.0攻击中学到的经验教训，有时可以使用完全浏览器兼容的HTTP/1请求导致异步。

你可以使用这些浏览器兼容的请求在浏览器和易受攻击的Web服务器之间触发客户端异步（CSD），从而对单服务器站点（它们本身不受请求走私攻击的影响）和内部网站（你无法直接访问）进行攻击。

> **了解更多**
>
> * **学习**：[客户端异步攻击](https://web-sec.gitbook.io/wsa/advanced/request-smuggling/browser/client-side-desync)
> * **LAB**：[客户端异步](https://portswigger.net/web-security/request-smuggling/browser/client-side-desync/lab-client-side-desync)
> * **LAB**：[通过客户端异步对浏览器缓存进行投毒](https://portswigger.net/web-security/request-smuggling/browser/client-side-desync/lab-browser-cache-poisoning-via-client-side-desync)

## 基于暂停的异步攻击

看似安全的网站可能包含隐藏的异步漏洞，这些漏洞只有在你暂停请求时才会显现出来。通过发送标头，承诺一个正文，然后只需等待，有时可以找到其他可用于服务器端和客户端利用的异步漏洞。

> **了解更多**
>
> * **学习**：[基于暂停的异步攻击](https://web-sec.gitbook.io/wsa/advanced/request-smuggling/browser/pause-based-desync)
> * **LAB**：[服务器端基于暂停的请求走私](https://portswigger.net/web-security/request-smuggling/browser/pause-based-desync/lab-server-side-pause-based-request-smuggling)
