# HTTP request smuggling Lab4 本題是 TE.CL(Transfer-Encoding + Content-Length)漏洞,目標是把 carlos 幹掉。 重點: - 前端支持 chunked,後端不支持 chunked。 所以一樣先進入網站並攔截封包。   這裡直接去 admin 都跟上題一樣需要 cookie。  所以我們在請求中加上 localhost 。  成功了,接著是砍掉目標使用者,從 admin 的頁面可以看到砍掉使用者的連結是啥,跟上題一樣。 ``` /admin/delete?username=carlos ``` 所以我們丟回請求中在試試。    :::info ### 跟 CL.TE 的差異在哪? 在於 `Content-Length` 的長度: - CL.TE 是「故意寫錯」的短長度,少於實際 chunked body 長度,裡包含完整的 smuggled request,因為只看 Content-Length 讀指定長度,後端用 Transfer-Encoding 解析 chunked body,讀到真正的結尾,後端會把 Content-Length 之後剩下的部分當成新請求。 - TE.CL 是「精確」的短長度,包括整個 chunked body,不會解析 chunked,後端因為沒 chunked 支援,只看到一部分資料,剩下當作下一個獨立請求。 | 漏洞類型 | Content-Length 設定 | Transfer-Encoding 設定 |smuggled request 在哪 | | -------- | -------- | -------- | -------- | | CL.TE | 故意短(少於實際 chunked body) | 有,chunked | chunked body 裡面 | | TE.CL | 精準(包含整個 chunked body) | 有,chunked | Content-Length 結尾後 | ### 換比喻: - CL.TE 是前端「只掐頭不截尾」,後端「拆包拆到底」。 - TE.CL 是前端「拆完整包」,後端「只看包裝盒標籤」。 ::: ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up