编码员征服安全。分享与学习系列 - 无效的重定向和转发

2019年5月23日发布
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列 - 无效的重定向和转发

2019年5月23日发布
作者:Jaap Karan Singh
查看资源
查看资源

对网站或应用程序进行编码,使其能够处理未经验证的重定向和转发,这对你的用户和你的组织都是非常危险的。这种常见的错误经常被黑客利用,他们希望实施网络钓鱼诈骗,或获得通常被限制的网页和信息的访问。

每当一个网络应用程序被设计成将用户转发到新的页面时,就有可能出现这些请求被操纵或劫持的危险。如果没有验证过程来防止转发参数指向非预期的目的地,就会发生这种情况。

好消息是,未验证的重定向和转发是比较容易从你的环境中消除的漏洞之一。一旦被清除,你可以采取几个简单的步骤来确保它们在未来永远不会被生成。

在这一集里,我们将学习。

  • 黑客如何利用未验证的重定向和转发漏洞
  • 为什么允许未经验证的重定向和转发可能是危险的
  • 可以采用的政策和技术来发现和解决这个问题。

攻击者如何利用无效的重定向和转发?

攻击者必须首先找到一个被设置为将用户转发到一个或多个特定页面的网络应用程序。如果目标页面是在代码中定义的,就不存在漏洞。例如,在Java中,这将是一种安全的、预定义的方式,将用户发送到一个新的位置,而不要求他们执行任何操作,如点击超链接。

response.sendRedirect("http://www.knownsafesite.com")。

如果网站被编程为接受用户输入的重定向,或者参数被打开,也许是为了从其他来源获得信息,那么这个漏洞就会发生。例如,开发人员可以使用 "url'GET参数"。

response.sendRedirect(request.getParameter("url"))。

虽然这提供了更多的灵活性,但它也产生了未经验证的重定向和转发漏洞。黑客可以在正斜杠后面添加信息,以触发重定向到他们选择的任何网站,也许是作为钓鱼邮件的一部分。用户在链接的第一部分看到受信任的域名,并没有意识到该网站可能将他们转发到黑客的网站。

为什么无效的重定向和转发如此危险?

允许未经验证的重定向和转发所带来的危险可能是巨大的。对于用户来说,最大的危险是他们可能成为网络钓鱼攻击的受害者。因为他们看到了顶级的URL,他们更有可能相信钓鱼邮件或其他通信,并点击一个链接。而且,如果他们被重定向到的页面看起来像真实的页面,这种欺骗可能相当有效。他们可能会分享他们的用户名、密码或其他凭证,而从不怀疑他们被操纵了。

消除无效的重定向和转发所带来的威胁

无效的重定向和转发是在应用程序正在开发时开始的。它们可以在事后被消除,但消除它们的最简单方法是,首先不允许用户参数或开放字符串作为任何重定向或转发功能的一部分。相反,严格定义用户将被转发的URL,消除变量并拒绝攻击者的操作空间。更好的是,考虑根本不使用重定向和转发。

如果绝对没有办法避免将变量作为重定向或转发过程的一部分,那么就必须有一个验证过程,以确保重定向是去往一组有效的目的地之一。最后,使用映射值而不是实际的URL。黑客会试图使用URL信息,即使他们怀疑有一个映射方案在使用,也可能无法猜到。

关于无效的重定向和转发的更多信息

要进一步阅读,你可以看看OWASP关于未经验证的重定向和转发的参考页。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

一劳永逸地解决未验证的重定向和转发问题。在我们的游戏化培训平台上应用你的新知识并测试你的技能。 [从这里开始]

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全。分享与学习系列 - 无效的重定向和转发

2019年5月23日发布
作者:Jaap Karan Singh

对网站或应用程序进行编码,使其能够处理未经验证的重定向和转发,这对你的用户和你的组织都是非常危险的。这种常见的错误经常被黑客利用,他们希望实施网络钓鱼诈骗,或获得通常被限制的网页和信息的访问。

每当一个网络应用程序被设计成将用户转发到新的页面时,就有可能出现这些请求被操纵或劫持的危险。如果没有验证过程来防止转发参数指向非预期的目的地,就会发生这种情况。

好消息是,未验证的重定向和转发是比较容易从你的环境中消除的漏洞之一。一旦被清除,你可以采取几个简单的步骤来确保它们在未来永远不会被生成。

在这一集里,我们将学习。

  • 黑客如何利用未验证的重定向和转发漏洞
  • 为什么允许未经验证的重定向和转发可能是危险的
  • 可以采用的政策和技术来发现和解决这个问题。

攻击者如何利用无效的重定向和转发?

攻击者必须首先找到一个被设置为将用户转发到一个或多个特定页面的网络应用程序。如果目标页面是在代码中定义的,就不存在漏洞。例如,在Java中,这将是一种安全的、预定义的方式,将用户发送到一个新的位置,而不要求他们执行任何操作,如点击超链接。

response.sendRedirect("http://www.knownsafesite.com")。

如果网站被编程为接受用户输入的重定向,或者参数被打开,也许是为了从其他来源获得信息,那么这个漏洞就会发生。例如,开发人员可以使用 "url'GET参数"。

response.sendRedirect(request.getParameter("url"))。

虽然这提供了更多的灵活性,但它也产生了未经验证的重定向和转发漏洞。黑客可以在正斜杠后面添加信息,以触发重定向到他们选择的任何网站,也许是作为钓鱼邮件的一部分。用户在链接的第一部分看到受信任的域名,并没有意识到该网站可能将他们转发到黑客的网站。

为什么无效的重定向和转发如此危险?

允许未经验证的重定向和转发所带来的危险可能是巨大的。对于用户来说,最大的危险是他们可能成为网络钓鱼攻击的受害者。因为他们看到了顶级的URL,他们更有可能相信钓鱼邮件或其他通信,并点击一个链接。而且,如果他们被重定向到的页面看起来像真实的页面,这种欺骗可能相当有效。他们可能会分享他们的用户名、密码或其他凭证,而从不怀疑他们被操纵了。

消除无效的重定向和转发所带来的威胁

无效的重定向和转发是在应用程序正在开发时开始的。它们可以在事后被消除,但消除它们的最简单方法是,首先不允许用户参数或开放字符串作为任何重定向或转发功能的一部分。相反,严格定义用户将被转发的URL,消除变量并拒绝攻击者的操作空间。更好的是,考虑根本不使用重定向和转发。

如果绝对没有办法避免将变量作为重定向或转发过程的一部分,那么就必须有一个验证过程,以确保重定向是去往一组有效的目的地之一。最后,使用映射值而不是实际的URL。黑客会试图使用URL信息,即使他们怀疑有一个映射方案在使用,也可能无法猜到。

关于无效的重定向和转发的更多信息

要进一步阅读,你可以看看OWASP关于未经验证的重定向和转发的参考页。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

一劳永逸地解决未验证的重定向和转发问题。在我们的游戏化培训平台上应用你的新知识并测试你的技能。 [从这里开始]

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。