URL 重定向及跳转漏洞

本文详细探讨了URL重定向漏洞的原理,如何通过第三方登录如QQ授权时被恶意利用,以及针对此漏洞的防御方法,包括referer验证和使用有效性验证Token。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 URL 重定向及跳转漏洞描述

URL 跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校验,导致用户浏览器跳转到钓鱼页面的一种漏洞。

现在 Web 登录很多都接入了 QQ、微信、新浪等第三方登录,以 QQ 第三方授权登录为例说明,在我们调用 QQ 授权服务器进行授权时,会在参数中传入 redirect_url(重定向)地址,告知 QQ 授权服务器,授权成功之后页面跳转到这个地址,然后进行站点登录操作。但是如果你的重定向地址在传输过程中被篡改成了一个钓鱼网址,那么就是导致用户的授权信息被非法获取。当然,QQ 第三方登录,也会有自己的策略,就是接入 QQ 第三方登录的应用,会在开发者平台,配置相关的跳转白名单,只有属于白名单中的域名、子域名或 url ,QQ授权服务器才跳转,如果发现 redirect_url 不合法,则跳转到非法页面

2 URL 重定向及跳转漏洞代码分析

header 获取 url 参数 使用 location 进行跳转,因为 url 参考可控导致可以跳转任何网站。

3 URL 重定向跳转攻击

构造有危害的钓鱼页面,通过这个 url 进行跳转。

http://192.168.1.9/06/vul/urlredirect/urlredirect.php?url=http://www.baidu.com安全意识低用户会误以为是当前信任页面发出来的连接,生成的链接,用户访问后,可能会产生欺诈行为,同时由于 qq,淘宝旺旺等基础 url 过滤,但是也是基于白名单的方式放行,所以导入 url 可以在这些软件上大范围传播,从而产生很大的危害。

4 url 重定向跳转防御

我们需要对传入的 URL 做有效性的认证,保证该 URL 来自于正确的地方,限制的方式同防止 csrf 一样可以包括:

1 referer 的限制

如果确定传递 URL 参数进入的来源,我们可以通过该方式实现安全限制,保证该 URL 的有效性,避免恶意用户自己生成跳转链接

2 加入有效性验证 Token

我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的 Token 对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制

### Pikachu靶场中的URL重定向实现 在Pikachu靶场中,URL重定向功能主要通过`urlredirect.php?url=`这一机制来实现[^1]。当用户访问该PHP文件并附带特定的URL参数时,服务器会将请求重定向至所提供的URL。 #### 不安全URL跳转实例 由于缺乏必要的输入验证和过滤措施,在某些情况下,攻击者能够利用此特性进行恶意操作。例如: ```php <?php // 假设这是 urlredirect.php 的简化版本 if (isset($_GET['url'])) { $targetUrl = $_GET['url']; header("Location: " . $targetUrl); } ?> ``` 上述代码片段展示了如何简单地获取用户提交的目标URL,并直接执行HTTP头部重定向命令。然而,这种方式极易受到URL重定向漏洞的影响,因为任何传入的有效URL都将被执行跳转动作[^2]。 #### 安全实践建议 为了避免潜在的安全风险,应当采取更为严谨的方法处理URL重定向逻辑。具体来说,应该考虑如下几点改进方案: - **固定重定向路径**:尽可能使用预先设定好的、可信的URL列表作为可能的目的地选项之一;而不是依赖于动态构建或完全由客户端控制的URL字符串[^3]。 - **实施严格的输入校验**:对于所有来自外部的数据都要进行全面而细致的审查工作,确保只允许合法合理的值进入后续业务流程之中。比如可以通过正则表达式匹配等方式限定可接受范围内的字符集组成规则等[^4]。 - **应用白名单策略**:建立一个已知良好站点域名集合,仅限这些经过认证后的资源才能成为有效的重定向目标对象。这样即使遇到非法尝试也能有效拦截下来而不至于造成实际危害[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值