前言¶
在 CDN、WAF 与源站并存的架构里,问题往往不是「某个参数能不能注入」,而是前后两级对同一条 TCP 流里请求结束位置理解不一致。手工拼 CL.TE、TE.CL 的 raw HTTP 很费时间,还要对照 RFC 7230 的 framing 规则;把通用聊天模型直接丢上去,又容易和 CRLF 注入、参数型漏洞混在一起。
下面介绍 SkillHub 上的社区 Skill「请求走私」(@user_3c6cb52e/request-smuggling-gpev)。它用标准 SKILL.md 把 HTTP 请求走私(request smuggling / desync)的探测思路、报文模板和决策树写进 Agent 上下文,便于在授权范围内做结构化排查。
这是什么¶
「请求走私」是 SkillHub 社区来源(community)的安全类 Skill,坐标 @user_3c6cb52e/request-smuggling-gpev,当前版本 1.0.0,分类 it-ops-security,发布者为 user_3c6cb52e(SkillHub 页面标注作者为 ҉Breeze🌔)。官方简介为:请求走私专用技能,帮助 AI Agent 高效完成相关任务。
Skill 元数据标明 MIT 许可,并声明可在 Claude Code、Codex、Hermes Agent、OpenClaw、QClaw、WorkBuddy 等框架中使用;标签 requires_api_key=false,安装后无需额外 API Key。Skill 正文强调:这是消息边界分歧(message boundary disagreement),不是简单的「头注入」——当 CDN/反向代理与源站对请求结束位置判断不一致时,应加载本 Skill。
核心功能¶
以下内容均来自已安装的 SKILL.md(v1.0.0),按能力分节说明。
走私类型与探测模板¶
- CL.TE:前端信任
Content-Length,后端信任Transfer-Encoding: chunked。提供首探报文:短Content-Length配合0结束块,使前端认为请求已结束,后端把后续字节当作下一条请求前缀。 - TE.CL:前端解析 chunked,后端只读
Content-Length。提供在 chunk 中嵌入第二条请求(如GET /admin)的完整示例,并说明需按实际字节数重算 chunk 长度(十六进制长度行)。 - TE.TE:前后端都处理
Transfer-Encoding,但对有效值或解析规则不一致。列出 8 种Transfer-Encoding混淆变体(空格、重复头、制表符、折行等)用于探测解析差异。
HTTP/2 与客户端侧¶
- H2 → H1 降级:说明伪头映射、禁止头转发、重复头合并等与走私相关的测试方向。
- 客户端去同步(client-side desync):说明浏览器
fetch在特定栈上的队列效应,并给出 illustrative 的no-cors+ 原始 body 含GET的 PoC 形状(成功往往表现为侧信道或日志异常,而非直接读响应)。
与相邻漏洞的路由¶
Skill 内写明与以下主题的边界:Apache HttpClient 特定版本可关联 ghost-bits-cast-attack;参数型注入应走 injection 路由;响应头拆分走 CRLF;缓存键混淆走 web-cache-deception。确认为 HTTP 消息边界 问题后应留在本 Skill,避免误路由。
工具与决策树¶
推荐工具表包括 Burp Suite HTTP Request Smuggler、GitHub 上的 defparam/smuggler、dhmosfunk/simple-http-smuggler-generator。附带从「路径上是否有反向代理/CDN」到 CL.TE / TE.CL / TE.TE / H2 分支的检测决策树 ASCII 图。
高级参考¶
正文末尾指向同目录下的 H2_SMUGGLING_VARIANTS.md(H2.CL、H2.TE、CL.0、Fat GET、缓存投毒链、CDN 产品行为矩阵等)。当前 SkillHub 安装包中仅包含 SKILL.md 与 _meta.json,该扩展文档若未随包下发,需以你本地安装结果为准。
安装与启用¶
先做 CLI 检查,再按坐标安装到当前 Agent 的 skills 目录(装错目录 Agent 不会加载)。
1. 检查 SkillHub CLI
command -v skillhub && skillhub --version
未安装时可按 SkillHub 安装说明 执行完整安装或仅 CLI 安装。
2. 安装本 Skill
官方页面给出的方式是:根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/request-smuggling-gpev。CLI 搜索结果显示的安装命令为:
skillhub install request-smuggling-gpev --namespace user_3c6cb52e --dir <你的 Agent skills 目录>
常用目录示例(来自 SkillHub 安装文档):
- Cursor:
~/.cursor/skills/ - Claude Code:
~/.claude/skills/ - Codex:
~/.codex/skills/或项目下的.agents/skills/
安装完成后重启或刷新 Agent,使 skills 目录生效。SkillHub 页面统计(抓取时):评分 100000,下载 1116,安装 0——安装数会随环境变化,以页面实时数据为准。
典型用法¶
在 Agent 对话中,当你怀疑「前后端对 CL/TE 优先级不一致」或「H2 降级后出现异常拼接」时,让 Agent 加载本 Skill,并按 Skill 中的首探步骤发送授权范围内的探测。
CL.TE 首探(Skill 原文假设与字节计数说明):
POST / HTTP/1.1
Host: target.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
Transfer-Encoding: chunked
0
SMUGGLED
前端按 Content-Length: 13 只读取 0\r\n\r\nSMUGGLED 共 13 字节;后端按 chunked 在 0 块结束后,将 SMUGGLED 及之后字节视为下一条请求的起始。
TE.CL 嵌入第二条请求(修改路径或头后须重算 chunk 长度;示例中 35 表示 53 字节 chunk body):
POST / HTTP/1.1
Host: target.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
Transfer-Encoding: chunked
35
GET /admin HTTP/1.1
Host: target.example
Foo: x
0
经过上面的步骤若出现时间差、队列污染或缓存异常等信号,再按 Skill 第 8 节的决策树收窄到 CL.TE、TE.CL 或 TE.TE 变体,并配合 Burp Smuggler 等工具做二次确认。
适用场景与注意¶
适合谁:在 it-ops-security 场景下做授权渗透、红队演练或架构安全评估的工程师;需要 Agent 稳定输出 raw HTTP 模板、区分走私与 CRLF/参数注入的人。
限制与坑:
- Skill 明确要求仅在授权范围内测试;并发走私可能污染连接池、破坏缓存或影响其他租户,优先隔离环境或低流量窗口。
- 浏览器侧 PoC 受同源策略、CORS 等约束,不能指望直接读回 smuggled 响应。
- 包内引用的
H2_SMUGGLING_VARIANTS.md与若干关联 Skill(如ghost-bits-cast-attack)未必随本坐标一并安装,需要单独安装或自行补齐。 - Repository / homepage 元数据指向
https://github.com/1991513ccie-png,与 SkillHub 分发渠道独立;版本与内容以 SkillHub 1.0.0 包为准。
结尾¶
「请求走私」把 HTTP 消息边界分歧、CL/TE/TE.TE 探测、H2 降级与工具链建议收敛成一份 Agent 可执行的 playbook,适合在已有反向代理拓扑时做系统化 desync 排查。官方 SkillHub 页面:https://www.skillhub.cn/skills/user_3c6cb52e/request-smuggling-gpev;API 坐标页:https://api.skillhub.cn/user_3c6cb52e/request-smuggling-gpev。