2016-08-18 77 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