未经验证的重定向和转发



互联网上的大多数 Web 应用程序经常将用户重定向和转发到其他页面或其他外部网站。但是,如果不验证这些页面的可信度,黑客可以将受害者重定向到网络钓鱼或恶意软件网站,或者利用转发访问未经授权的页面。

让我们借助简单的图表了解此缺陷的威胁主体、攻击载体、安全弱点、技术影响和业务影响。

unvalidated_redirects_and_forwards

示例

一些未经验证的重定向和转发的经典示例如下所示:

  • 假设应用程序有一个页面 - redirect.jsp,它接收一个参数redirectrul。黑客添加了一个恶意 URL,该 URL 会重定向执行网络钓鱼/安装恶意软件的用户。

http://www.mywebapp.com/redirect.jsp?redirectrul=hacker.com
  • 所有 Web 应用程序都用于将用户转发到站点的不同部分。为了实现这一点,某些页面使用参数来指示如果操作成功,应将用户重定向到哪里。攻击者会构造一个 URL,该 URL 会通过应用程序的访问控制检查,然后将攻击者转发到攻击者无权访问的管理功能。

http://www.mywebapp.com/checkstatus.jsp?fwd=appadmin.jsp

预防机制

  • 最好避免使用重定向和转发。

  • 如果不可避免,则应在不涉及用户参数重定向目标的情况下进行。

广告