我是一个安全和阅读主机头注入的初学者。我测试了一个应用程序是否存在此漏洞,并且可能存在一些请求,但开发人员实现了无缓存、无存储标志,并且该漏洞未处于密码重置请求中。
所以第一件事是不会有缓存中毒。第二,在密码重置请求中没有发生这种情况。
正如我所理解的那样,为了利用这个漏洞,我更改了主机头。所以我想知道为什么它会是一个漏洞,为什么用户会改变应用程序的主机?攻击者如何利用它呢?
发布于 2018-02-15 04:58:41
与所有情况一样,应用程序上的客户端输入不应该被信任(在安全性方面)。host标头属性也是客户端可以更改的内容。
例如,典型的攻击场景是:
让我们假设您有一个应用程序,您盲目地信任主机头值,并在应用程序中使用它,而不对其进行验证。因此,您可能在应用程序中有以下代码,动态加载JS文件(按主机名):
<script src="http://<?php echo $_SERVER['HOST'] ?>/script.js">在此场景中,无论攻击者将其设置为主机标头,都会在此JS脚本加载中反映出来。因此,攻击者可以通过操纵响应来从另一个主机加载JS脚本(可能是恶意的)来篡改这一点。如果应用程序正在使用任何缓存机制或CDN,并且该请求多次重复,则缓存代理可以缓存它。然后,也可以将它提供给其他用户(因为它被保存到缓存中)。
另一种利用这一机会的方法是:
假设应用程序具有用户密码重置功能。该应用程序将发送一封电子邮件给任何要求重新设置密码的人,其中包含一个唯一的令牌来重置密码,如下面的电子邮件:
Hi user,
Here is your reset link
http://<?php echo $_SERVER['HOST'] ?>/reset-password?token=<?php echo $token ?>现在,攻击者可以通过将主机标头值篡改为他想要的值,从而触发已知的受害者电子邮件的密码重置。然后,受害者将收到密码重置的合法电子邮件,而URL将被更改为攻击者设置的域。如果受害者打开该链接,密码重置令牌可能会泄漏给攻击者,从而导致帐户接管。
https://stackoverflow.com/questions/47880156
复制相似问题