未经验证的重定向和转发
互联网上的大多数Web应用程序经常将用户重定向并转发到其他页面或其他外部网站。但是,如果不验证这些页面的可信度,黑客可以将受害者重定向到网络钓鱼或恶意软件站点,或者使用转发来访问未经授权的页面。
让我们来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。
- 威胁代理 - 检测发现未经检查的重定向很容易。查找可以设置完整URL的重定向。未经检查的标头更难,因为他们瞄准内部网页。
- 攻击者的方法 - 重定向可能会尝试安装恶意软件或欺骗受害者披露密码。
- 安全弱点 - 如果攻击者仅访问内部功能怎么办? 如果他们被恶意软件欺骗怎么办?
- 如何发现缺陷 - 任何可以欺骗有效的应用程序用户向网站提交请求的人。
- 技术影响 - 攻击者链接到未经验证的重定向并诱导受害者点击它。
- 业务影响 - 应用程序经常将用户重定向到其他页面,或以类似方式使用内部转发。有时目标页面有一个未经验证的参数。
示例
未经验证的重定向和转发的一些经典示例如下 -
假设应用程序有一个页面 - redirect.jsp
,它接受一个参数redirectrul
。黑客添加了一个恶意URL,用于重定向执行网络钓鱼/安装恶意软件的用户。
http://www.mywebapp.com/redirect.jsp?redirectrul=hacker.com
所有Web应用程序用于将用户转发到站点的不同部分。为了实现相同的目的,一些页面使用参数来指示如果操作成功则应该将用户重定向到何处。攻击者制作一个URL,该URL通过应用程序的访问控制检查,然后将攻击者转发给攻击者无法访问的管理功能。
http://www.mywebapp.com/checkstatus.jsp?fwd=appadmin.jsp
预防机制
- 最好避免使用重定向和转发。
- 如果它是不可避免的,那么应该在不重定向目标的情况下涉及用户参数的情况下完成。