# HTTP request smuggling Lab8 本題前端支援 HTTP/2,但內部還是會 降級轉送為 HTTP/1 給後端,管理員每 15 秒會登入一次,後端連線每 10 個 request 會重置一次(失敗就多發幾次即可)。 一樣先進入網站並攔截請求。 ![image](https://hackmd.io/_uploads/rJYaHr8wgg.png) 這裡我們首先可以嘗試使用 HTTP/2 + chunked 傳送一個 request,造成 response queue 被污染,只是還不確定能不能這麼做,所以先驗證是否可以成功 poison queue。 ![image](https://hackmd.io/_uploads/HJDaIB8Pxe.png) 通過測試會發現過每兩次請求就會出現一次 404,這表示 smuggling 成功,下一個人的 request 被連在後面處理。 接著來實作一個真正有用的 response queue poison 請求。 ![image](https://hackmd.io/_uploads/SyordrLvge.png) - 0 是 chunked 的結尾(代表第一個 request 結束)。 - 後面就是 smuggle 的 HTTP/1 請求。 - 故意用不存在的路徑 `/usagi`,讓我們自己每次都拿到 404,而不是其他干擾的 response。 再來就是等 admin 上線去撿他的 response。 - 每次送一次 Poison 請求後,等個 5 秒。 - 然後重送一次同樣的請求,這次會拿到: - 如果拿到 200/302 → 可能是 admin 的 response。 - 如果拿到 Set-Cookie → BINGO!抓到 admin 的 session cookie。 ![image](https://hackmd.io/_uploads/SkuBhHIDgx.png) ``` ipocyND9hLCstQoQyM9DSE6fCZK517VL ``` ![image](https://hackmd.io/_uploads/H1rfhBLDgx.png) 改完 session 確實到 admin 帳號裡面了,再去刪除目標資料來完成 Lab。 ![image](https://hackmd.io/_uploads/SJej2SIvgx.png) ![image](https://hackmd.io/_uploads/BkW33HLweg.png) ---