公开重定向(又称未验证的重定向和转发) 是一个 URL 重定向漏洞。攻击者可利用该漏洞将用户从可信任的网站重定向到存在安全隐患的第三方网站,并通过钓鱼攻击窃取他们的验证凭据。应对该漏洞,我们建议配置 Plesk 限制 URL 重定向。

success_redirect_urlfailure_redirect_url 参数给该漏洞提供了侵入的可能,在您设置自动登录 Plesk 会使用到该参数。success_redirect_url参数包含一个或多个在成功登录后用户会被重定向到的主机名,而failure_redirect_url包括在登录尝试失败或注销后会被重定向的主机名。

该漏洞可能会影响所有的 Plesk 服务器,不管是已经设置了自动登录 Plesk 的还是没有设置的。要防御该漏洞,您需要添加一项到 panel.ini 文件。该项的具体内容取决于是否设置了自动登录 Plesk。

如果未设置自动登录 Plesk,要保护 Plesk 抵御公开重定向,需执行如下操作:

添加以下各行到 panel.ini 文件:

[security]
trustedRedirectHosts =

trustedRedirectHosts 行为空且未指定主机名。通过该方式您可禁止 Plesk 使用 success_redirect_urlfailure_redirect_url参数重定向到任何主机名。

如果已设置自动登录 Plesk,要保护 Plesk 抵御公开重定向,需执行如下操作:

按照下面的模式添加一项到 panel.ini 文件:

[security]
trustedRedirectHosts = hostname

其中 hostname 是一个可信的主机名,是您允许通过success_redirect_urlfailure_redirect_url参数进行URL重定向到的主机名。

trustedRedirectHosts 设置接受由逗号隔开的一个或多个主机名,格式如下:

  • 一个域名,例如 example.com
  • 一个 IP 地址,例如 192.0.2.1
  • 通配符子域名,例如 *.example.com

注解: 当在 trustedRedirectHosts 中指定主机名时,根据上述模式只使用星号 (*) 字符 (*.example.com)。否则您的服务器仍可能被漏洞影响。例如,主机名 example.*192.0.2.* 不安全,因为它们会分别匹配 example.maliciouswebsite.com192.0.2.maliciouswebsite.com

以下是 trustedRedirectHosts 设置(在 panel.ini 文件中)的有效示例:

[security]
trustedRedirectHosts = example.com,192.0.2.1,*.example.com

其中 example.com192.0.2.1*.example.com 是用于 success_redirect_urlfailure_redirect_url 参数中的主机。

注解: 当在 trustedRedirectHosts 中指定多个主机名时,不要在分隔主机名的逗号前后使用空白 ( ) 字符。否则将不会正确处理主机名且 URL 重定向将失败。