【发布时间】:2016-08-25 01:33:56
【问题描述】:
我通过这个link 了解HPP(HTTP 参数污染)攻击。
在 HPP 攻击中,攻击者修改 HTTP 参数并将修改后的 URL 发送给受害者。这和CSRF攻击不一样吗?如果没有,有人能告诉我 CSRF 和 HPP 有什么区别吗?
【问题讨论】:
标签: security csrf csrf-protection
我通过这个link 了解HPP(HTTP 参数污染)攻击。
在 HPP 攻击中,攻击者修改 HTTP 参数并将修改后的 URL 发送给受害者。这和CSRF攻击不一样吗?如果没有,有人能告诉我 CSRF 和 HPP 有什么区别吗?
【问题讨论】:
标签: security csrf csrf-protection
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 链接来实现,所以您不会t 实际上得到一个正在从当前页面构建的操作链接(但是,嘿,一切皆有可能)。这就是为什么 HPP 在实践中更多地围绕后端请求。
【讨论】:
从链接文章的描述来看,HPP 似乎是一种特定类型的注入攻击,您可以在其中修改请求参数以修改返回页面的内容。从某种意义上说,它是反射型 XSS 攻击的更通用版本;在 XSS 中,您试图通过篡改请求来注入和执行恶意 javascript,而在 HPP 中,您试图修改任何数据(在给出的示例中,用于生成 URL 的数据)以注入恶意数据。
然而,CSRF 一词通常用于描述一种攻击,在这种攻击中,一个完全有效的请求被发送到一个导致意外或不需要的行为的上下文中的服务器。比较标准的例子是诱使用户点击您网站上的链接,该链接会向用户的银行网站(作为用户)发送请求,将资金从他们的账户转移到您的账户。
没有什么可以阻止攻击者将 HPP 或 XSS 攻击与 CSRF 攻击结合使用。 XSS 或 HPP 攻击利用在处理用户输入时缺乏验证,该输入随后作为响应的一部分返回,而 CSRF 攻击利用应用程序流中的“序列中断”来导致意外行为。
【讨论】: