我是一个初学者在安全和阅读有关主机头注射。我测试了此漏洞的应用程序,它可能有一些要求,但开发商实现无缓存,无店铺标志和这个漏洞是不是在密码重置请求。 所以,第一件事是不会有缓存中毒。第二是它不要求重设密码发生。 据我所知,对于利用此漏洞,我改变了主机头。所以我想知道它为什么会成为一个漏洞,为什么用户会更改应用程序的主机?如何攻击者可以利用它?
正如在所有的应用客户端输入应永远信赖的(在安全方面)的情况下。该host
头属性也未尝可以通过客户端进行更改。
一个典型的攻击场景将是例如:
让我们假设你有你盲目地相信HOST头值,并在应用程序中使用它,而不用验证它的应用程序。所以你可能在你的应用程序,在那里你动态地加载JS文件(主机名)下面的代码:
<script src="http://<?php echo $_SERVER['HOST'] ?>/script.js">
在这种情况下,无论攻击者设置为HOST头将在此得到体现JS脚本负荷。因此,攻击者可以通过操纵以从另一台主机(潜在的恶意)加载一个JS脚本的回应该篡改。如果应用程序正在使用任何缓存机制或CDN并且如果该请求被重复多次,可以通过高速缓存代理被缓存。然后,这可以提供给其他用户,以及(因为它被保存到缓存)。
利用此的另一种方式是:
让我们假设该应用程序有一个用户密码重置功能。并且应用程序将发送一封电子邮件给任何人询问了一个独特的令牌的密码重置重置它,像下面的电子邮件:
Hi user,
Here is your reset link
http://<?php echo $_SERVER['HOST'] ?>/reset-password?token=<?php echo $token ?>
现在,攻击者可以通过篡改主机头值以他的欲望的一个触发对已知受害者的电子邮件密码重置。那么受害者将收到密码重置的合法的电子邮件,但该网址将改为由攻击者设置的域。如果受害者会打开该链接,密码重置令牌可能被泄露给攻击者,因此会导致帐户接管。