CSRF和HPP(HTTP参数污染)之间的区别?

时间:2016-08-18 10:23:14

标签: security csrf csrf-protection

我浏览了这个link以了解HPP(HTTP参数污染)攻击。

在HPP攻击中,似乎攻击者修改HTTP参数并将修改后的URL发送给受害者。这与CSRF攻击一样吗?如果没有,有人可以告诉我CSRF& HPP?

2 个答案:

答案 0 :(得分:1)

从链接文章描述的内容来看,似乎HPP是一种特定类型的注入攻击,您可以在其中修改请求参数以修改返回页面的内容。从某种意义上说,它是反射XSS攻击的更通用版本;而使用XSS,你试图通过篡改请求来注入和执行恶意javascript,在HPP中,你试图修改任何数据(在给定的示例中,用于生成URL的数据)以注入恶意数据。

然而,术语CSRF通常用于描述一种攻击,其中在上下文中将完全有效的请求发送到服务器,从而导致意外或不需要的行为。有些标准的例子是欺骗用户点击您网站上的链接,该链接向用户的银行网站(作为用户)发送请求,以便将资金从他们的帐户转移到您的帐户。

没有任何东西阻止攻击者使用带有CSRF攻击的HPP或XSS攻击。 XSS或HPP攻击利用了用户输入处理中缺乏验证的优势,后者作为响应的一部分返回,而CSRF攻击利用应用程序流中的“序列中断”导致意外行为。

答案 1 :(得分:1)

HTTP参数污染是指您的应用程序向另一个系统发出后端HTTP请求,并且可以通过输入主应用程序来操纵这些参数。 HPP的定义是攻击者将重复的参数名称传递给后端请求,这会覆盖应用程序显式传递的参数值。类似的漏洞,HTTP参数注入是由攻击者向后端请求添加一个新参数定义的,该参数由另一个系统解释。因此HPI会添加一个新参数,而HPP会以新的方式忽略或解释现有参数。

有关HPP的一个可靠示例,请参阅my answer here

CSRF不需要任何后端HTTP请求。这是一个前端请求,但是受害者在他们不知情的情况下提出。它基本上意味着使用受害者的浏览器和受害者的授权cookie进行恶意请求。它可以像攻击者页面上的隐藏图像一样简单:

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

只要受害者访问攻击者的页面(例如,通过电子邮件发送给他们的链接或论坛上发布的内容),就会触发此操作。

有关使用POST方法的另一个示例,请参阅my answer here

有时可以通过CSRF利用HPP漏洞。例如,需要受害者成为登录到可通过HPP利用的系统的受害者。例如可以由攻击者的网站发送到https://www.example.com/transferMoney.php的POST,传递toAccount=9876 POST参数,使受害者使用www.example.com的自动化cookie将钱转移到未经授权的帐户。

关于您问题中的文章,我认为这不是一个真实的HPP攻击,因为任何导致状态更改的操作都应该通过POST方法实现,而不是文章演示的GET链接,所以你实际上并没有从当前页面构建一个动作链接(但是,嘿,一切皆有可能)。这就是HPP在实践中更多地围绕后端请求的原因。