【基础漏洞】任意URL跳转

admin 2023年5月24日14:13:19评论37 views字数 1288阅读4分17秒阅读模式


  • 漏洞介绍

  • 漏洞危害

  • 漏洞复现

    • 场景搭建

    • 复现过程

  • 绕过字典

  • 漏洞实战

  • 修复建议


漏洞介绍

URL 跳转漏洞(URL Redirection Vulnerability)又叫开放重定向漏洞(Open Redirect Vulnerability),是一种常见的网络安全漏洞,它存在于许多网站和应用程序中。该漏洞的根本原因是没有对用户提供的 URL 进行充分的验证和过滤,导致攻击者可以通过构造恶意 URL,将用户重定向到任意的网站或应用程序中。

漏洞危害

以攻击用户客户端为主,对服务器本身不造成影响。

  1. 钓鱼攻击: 攻击者可以将用户重定向到伪装成合法网站的钓鱼网站,以获取用户的敏感信息,如用户名、密码、银行账户等。
  2. 恶意软件传播: 攻击者可以将用户重定向到恶意网站,从而下载和安装恶意软件,对用户设备进行感染。
  3. 网络针对性攻击: 攻击者可以将用户重定向到特定的恶意网站,利用浏览器或插件漏洞来攻击用户的系统。
  4. 品牌声誉受损: 恶意重定向可能会导致受攻击网站的品牌声誉受损,用户会失去对该网站的信任。

漏洞复现

场景搭建

将如下代码保存为test.php

<?php
$url=$_GET['url'];
header("Location: $url");
?>

依然使用 php 快速启动

php -S 0.0.0.0:9999

访问http://internal.gm7.org:9999/test.php即可

复现过程

访问 http://internal.gm7.org:9999/test.php?url=https://baidu.com,将会跳转到baidu.com

【基础漏洞】任意URL跳转
jump

其中baidu.com可以写成任意网站,用户也会根据参数 url 设置的值跳转到任意网站中。

绕过字典

上面的复现只是最基础的情况,但是大多数网站都或多或少做过一些加固,这里我直接贴出来我常用的绕过字典(点击下载[1]),一共 637 条。

大家在使用的时候,只需要将white.domain替换为目标允许的白名单域名即可。

【基础漏洞】任意URL跳转
dict

漏洞实战

某网站存在“阅读原文”功能,如下图

【基础漏洞】任意URL跳转
阅读原文

点击后会跳转到对应的网站中,根据经验,可发现goto后面为一串网址的 base64 编码,因此我们只需要构造:

https://xxx.com/goto/<base64(网址)>

就可以跳转到任意网站中,如:

https://xxx.com/goto/aHR0cHM6Ly9ibG9nLmdtNy5vcmcv

测试后成功跳转:

【基础漏洞】任意URL跳转
success

修复建议

  1. 输入验证: 在接受用户输入并用于构建 URL 跳转功能之前,始终进行输入验证。确保只接受合法的 URL,并防止恶意代码的注入。
  2. 白名单验证: 对于跳转的 URL,建议使用白名单验证,只允许跳转到事先定义的合法域名或 URL。
  3. 安全编码实践: 开发人员应遵循安全编码实践,包括对用户输入进行适当的转义和过滤,以防止恶意 URL 的构造。
  4. 警告和提示: 在重定向之前,向用户显示明确的警告和提示信息,确保用户能够确认将要访问的目标网站的合法性。

参考资料

[1]

点击下载: README.assets/open-redirects.txt

- END -


原文始发于微信公众号(初始安全):【基础漏洞】任意URL跳转

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月24日14:13:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【基础漏洞】任意URL跳转https://cn-sec.com/archives/1756592.html

发表评论

匿名网友 填写信息