前言¶
在 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。