01 概述
HTTP參數污染(HPP)是指污染Web應用程序的HTTP參數以實現特定的惡意攻擊。它指的是操縱網站如何處理它在 HTTP 請求期間接收到的參數,它改變了網站預期的行為。HTTP 參數污染是一種簡單但有效的攻擊方式。
當你污染任何參數時,代碼只在服務器端運行,這是不可見的,但我們可以在屏幕上看到結果,中間的過程是一個黑盒。
例如,有一個 URL
https://www.anybank.com/send 具有三個參數:
from :
to :
amount :
URL:https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000
現在這是一個正常的 URL,它將處理從 accountA 到 accountB 的 10000 交易,但是如果我們添加另一個相同的參數“from :”會怎么樣?所以 URL 將類似于:
https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000&from=accountC
當此 URL 將進行 10000 的交易時,將從 accountC 而不是 accountA 中扣除,這就是您在 HTTP 參數污染攻擊中操縱參數的方式。此漏洞的范圍不僅限于 GET 請求,您還可以對基于 POST 的請求執行此攻擊。你可以在很多地方嘗試這個漏洞,比如密碼更改、2FA、評論、個人資料照片上傳、傳遞 API 密鑰的參數、OTP 等。
當你操縱任何參數時,它的結果取決于每種Web技術如何解析它們的參數。您可以使用“WAppalyzer”來識別 Web 技術。下面是部分技術及其參數解析的截圖。

我想分享我在HPP 攻擊中的一個案例,我可以利用這個漏洞接管一個帳戶。
02 案例分享
我如何找到這個漏洞?
1、我訪問那個系統的登錄頁面,它要求一個 OTP 用于登錄。

2. 我輸入郵箱地址并點擊“發送一次性密碼”
3. 我使用 burpsuite 攔截請求并使用相同的參數添加了另一個郵箱地址(我創建了兩個郵箱用于測試)

4. 我收到了一個 shrey……@gmail.com 的OTP ,在我的另一個帳戶 radhika……@gmail.com中。

5. 我在那個系統的登錄頁面輸入了這個 OTP ,并進入了shrey用戶中心。

所以這里發生的是后端應用程序使用第一個“email”參數的值生成一個 OTP,并使用第二個“email”參數的值來接收該值,這意味著一個 shrey…[email protected] 的 OTP 被發送到 radhika…[email protected]。
注意:在第 4 步的圖片中,我收到了 radhika…@gmail.com 的 OTP我很困惑,因為消息說你好 Radhika,所以我認為參數沒有被污染,OTP 是給 radhika….@ gmail.com, 但當我在嘗試 OTP 時 shrey…@gmail.com 它起作用了。
緩解:
應執行適當的輸入驗證以防止此類攻擊。
參考及來源:
https://shahjerry33.medium.com/http-parameter-pollution-its-contaminated-85edc0805654