ServerAlias *
在 Apache 配置中使用可能存在什么问题吗?
我考虑了一件事:ServerAlias
基于客户端提供的 HTTP 标头中的 HTTP_HOST,显然客户端可以手动修改。用户是否可以通过 HTTP_HOST 发送任何可能对服务器有害/损坏的值?
答案1
嗯,其实没必要这么做。如果其他VirtualHosts
主机名都不匹配,服务器将使用默认虚拟主机,即配置中的第一个虚拟主机。因此,默认虚拟主机通常命名为000-default
; ,以便成为 中的第一个/etc/apache2/sites-enabled
。
因此,您可以通过将 中的符号链接重命名sites-enabled
为第一个来实现相同的结果。或者您可以将 设置000-default
为重定向到您的实际域。
我认为目前 Apache 中没有任何已知漏洞可以利用HTTP_HOST
。但是,这取决于您在默认虚拟主机上运行的应用程序,例如允许通过 修改某些可利用变量的 PHP 脚本HTTP_HOST
。实际上,通过使 成为000-default
重定向,您也可以避免这种(较小的)风险。
答案2
在我看来,答案是“不”。正如艾萨·约基宁Apache 本身可能不会因为使用而受到直接损害,HTTP_HOST
但会给运行在 Apache 上的应用程序带来问题。从此,恶意攻击的可能性呈指数级增长。
读完这篇文章后实用的 HTTP Host 头攻击可以更好地理解HTTP_HOST
攻击是如何发生的,以及它们可能产生的影响。文章中有一个攻击示例使用 curl 来欺骗HTTP_HOST
以包含额外的非预期内容。以下是连接到本地主机并保存输出的类似示例:
curl -H "Host: fakehostPLUS\"onerror='alert(1)'rel='stylesheet'" localhost -o file.html