2016-08-18 32 views
1

我通過這個link瞭解HPP(HTTP參數污染)攻擊。CSRF和HPP之間的區別(HTTP參數污染)?

在HPP攻擊中,攻擊者修改HTTP參數並將修改後的URL發送給受害者。這與CSRF攻擊不一樣嗎?如果沒有人可以告訴我什麼是CSRF & HPP之間的區別?

回答

1

HTTP參數污染是當您的應用程序向另一個系統發出後端HTTP請求時,這些參數可以通過輸入到主應用程序中進行處理。 HPP由攻擊者導致重複參數名稱傳遞給後端請求的事實定義,後端請求覆蓋應用程序顯式傳遞的參數值。一個類似的漏洞,HTTP參數注入由攻擊者添加一個新參數到另一個系統解釋的後端請求來定義。因此,HPI會導致添加新參數,而HPP會使現有參數以新方式被忽略或解釋。

查看my answer here瞭解HPP的實例。

CSRF不需要任何後端HTTP請求。這是一個前端請求,但是受害者在他們不知情的情況下做出的。它基本上意味着使用受害者的瀏覽器和受害者的授權cookie進行惡意請求。這可能是因爲攻擊者的頁面上的隱藏圖像一樣簡單:

<img src="https://bank.example.com/transfer_money?toAmount=999&toAccount=12345678" /> 

只要受害者訪問攻擊者的操作,這將觸發(例如下面通過電子郵件發送給他們一個鏈接,或東西張貼在論壇)。

有關使用POST方法的另一個示例,請參見my answer here

有時HPP漏洞可以通過CSRF利用。例如,需要受害者成爲登錄到可通過HPP利用的系統的人員。例如POST到https://www.example.com/transferMoney.php可能由攻擊者的網站製作,通過toAccount=9876 POST參數導致受害者使用他們的自動化cookie向www.example.com傳輸錢給未經授權的帳戶。

關於您的問題中的文章,我不認爲這是一個現實的HPP攻擊,因爲任何導致狀態更改的操作都應該通過POST方法實現,而不是像文章演示的那樣通過GET鏈接實現,實際上並沒有從當前頁面構建一個動作鏈接(但是,嘿,任何事情都是可能的)。這就是HPP實際上更多地關注後端請求的原因。

+0

感謝您的澄清。正如你所說HPP可以通過CSRF被利用。所以我猜如果我們有適當的CSRF保護機制,攻擊者將無法欺騙用戶執行HPP。 但是CSRF過濾器不會阻止您的HPP示例中提到的情況,其中實際的攻擊者是正在使用它的用戶。 – SSB

+0

正確。當參數被非正常解釋的重複項「污染」時,HPP就是這樣。另一個答案沒有提到這個關鍵事實。 – SilverlightFox

1

從鏈接文章描述的看來,HPP似乎是一種特定類型的注入攻擊,其中您修改請求參數以修改返回頁面的內容。從某種意義上說,它是反映XSS攻擊的更廣泛的版本;而在XSS中,您嘗試通過篡改請求來注入並執行惡意JavaScript,而在HPP中,您嘗試修改任何數據(在給出的示例中,用於生成URL的數據)以注入惡意數據。

然而,術語CSRF通常用於描述在完全有效的請求發送到服務器的情況下發生意外或不想要的行爲的攻擊。這個比較標準的例子是欺騙用戶點擊您網站上的鏈接,該鏈接會向用戶的銀行網站(以用戶身份)發送請求,以將錢從他們的帳戶轉移到您的帳戶。

沒有什麼能夠阻止攻擊者使用帶有CSRF攻擊的HPP或XSS攻擊。 XSS或HPP攻擊利用缺少對用戶輸入進行驗證的優勢,稍後將其作爲響應的一部分返回,而CSRF攻擊利用應用程序流中的「序列中斷」來引起意外行爲。

+0

感謝您抽出時間回答問題。 – SSB

+0

HPP意味着創建一個具有重複參數的請求,該請求會欺騙應用程序處理攻擊者的副本而不是原始副本。我已經回答了,希望能夠澄清事情。 – SilverlightFox