cache-poisoning-smuggling
$
npx mdskill add wgpsec/AboutSecurity/cache-poisoning-smugglingPoison caches or smuggle requests across proxy layers.
- Bypasses security controls by exploiting HTTP parsing mismatches.
- Requires targets with CDN, reverse proxies, or server architecture gaps.
- Identifies unkeyed inputs and request boundary inconsistencies.
- Executes injection or smuggling payloads to alter response content.
SKILL.md
.github/skills/cache-poisoning-smugglingView on GitHub ↗
---
name: cache-poisoning-smuggling
description: "Web 缓存投毒和 HTTP 请求走私。当目标使用 CDN/反向代理/缓存层(Cloudflare/Varnish/Nginx)、或有前后端服务器架构差异时使用。通过操纵缓存键或利用 HTTP 解析差异来投毒缓存或绕过安全控制。高级 Web 攻击技术"
metadata:
tags: "cache poisoning,request smuggling,http smuggling,缓存投毒,请求走私,cdn,desync,cl-te,te-cl,hop-by-hop"
category: "exploit"
---
# Web 缓存投毒 & HTTP 请求走私
两种相关但不同的高级 Web 攻击技术,都利用了多层 Web 架构中的解析差异。
---
## Part A: Web 缓存投毒 (Cache Poisoning)
核心思路:找到一个**影响响应内容但不包含在缓存键中的 HTTP 头**(unkeyed input),注入恶意内容到缓存。
### A.1 识别缓存行为
```
# 发送两次相同请求,检查响应头
http_request url="http://target/page" headers={"X-Test":"1"}
```
缓存指标:
- `X-Cache: HIT/MISS`
- `Age: 300`(缓存存活秒数)
- `CF-Cache-Status: HIT`(Cloudflare)
- `Via: 1.1 varnish`
### A.2 发现 Unkeyed Input
逐个测试 HTTP 头是否影响响应但不改变缓存键:
```
X-Forwarded-Host: evil.com → 响应中出现 evil.com?
X-Forwarded-Scheme: http → 强制 HTTP 重定向?
X-Original-URL: /admin → 路径覆盖?
X-Rewrite-URL: /admin
X-Forwarded-For: 127.0.0.1 → 绕过 IP 限制?
```
### A.3 投毒
如果 `X-Forwarded-Host` 影响响应中的资源链接:
1. 发送带恶意 Header 的请求
2. 响应被缓存(含恶意内容)
3. 后续用户访问同一 URL → 获取到被投毒的缓存
---
## Part B: HTTP 请求走私 (Request Smuggling)
核心思路:前端代理和后端服务器对**请求边界**的解析不一致,导致一个 HTTP 请求被解析为两个。
### B.1 识别走私类型
| 类型 | 前端判断长度 | 后端判断长度 |
|------|-------------|-------------|
| CL.TE | Content-Length | Transfer-Encoding |
| TE.CL | Transfer-Encoding | Content-Length |
| TE.TE | Transfer-Encoding | Transfer-Encoding(处理差异)|
### B.2 CL.TE 检测
前端用 Content-Length,后端用 Transfer-Encoding:
```
POST / HTTP/1.1
Host: target.com
Content-Length: 13
Transfer-Encoding: chunked
0
SMUGGLED
```
如果后端处理了 `SMUGGLED` 作为新请求的开头 → 存在走私。
**时间延迟检测法**(更可靠):发送不完整的 chunked body,如果前端按 CL 转发完毕但后端等待剩余 chunk → 响应超时/时间延迟 → 存在 CL.TE 走私。响应差异(超时 vs 正常)是判断的关键依据。
### B.3 TE.CL 检测
```
POST / HTTP/1.1
Host: target.com
Content-Length: 3
Transfer-Encoding: chunked
8
SMUGGLED
0
```
### B.4 利用走私
**绕过前端安全控制**:
走私一个访问 `/admin` 的请求,绕过前端代理的 ACL。
**窃取其他用户请求**:
走私一个不完整的 POST 请求,后端等待更多数据 → 下一个用户的请求被拼接上来 → 读取其 Cookie/Token。
**缓存投毒**:
走私一个到不同路径的请求,让缓存存储错误的响应内容。
## 注意事项
- HTTP 走私需要精确控制 HTTP 原始字节,用 curl `--data-binary` 发送
- 缓存投毒影响范围取决于 TTL 和 key 设计
- TE.TE 混淆绕过:`Transfer-Encoding: xchunked`、`Transfer-Encoding\n: chunked`(换行/折叠注入)、多个 TE 头利用解析差异
- 缓存投毒后可注入 XSS,加载恶意 JS 影响所有访问者
## 深入参考
- 缓存投毒/走私高级技术(Web Cache Deception/HTTP/2 Downgrade/h2c/Response Desync) → [references/cache-smuggling-techniques.md](references/cache-smuggling-techniques.md)
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|