乐趣区

关于web安全:WEB安全任意URL跳转

1.1. 破绽介绍

URL 跳转破绽(URL Redirection Vulnerability)又叫凋谢重定向破绽(Open Redirect Vulnerability),是一种常见的网络安全破绽,它存在于许多网站和应用程序中。该破绽的根本原因是没有对用户提供的 URL 进行充沛的验证和过滤,导致攻击者能够通过结构歹意 URL,将用户重定向到任意的网站或应用程序中。

1.2. 破绽危害

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

  1. 钓鱼攻打: 攻击者能够将用户重定向到伪装成非法网站的钓鱼网站,以获取用户的敏感信息,如用户名、明码、银行账户等。
  2. 恶意软件流传: 攻击者能够将用户重定向到歹意网站,从而下载和装置恶意软件,对用户设施进行感化。
  3. 网络针对性攻打: 攻击者能够将用户重定向到特定的歹意网站,利用浏览器或插件破绽来攻打用户的零碎。
  4. 品牌名誉受损: 歹意重定向可能会导致受攻打网站的品牌名誉受损,用户会失去对该网站的信赖。

1.3. 破绽复现

1.3.1. 场景搭建

将如下代码保留为test.php

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

仍然应用 php 疾速启动

php -S 0.0.0.0:9999

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

1.3.2. 复现过程

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

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

1.4. 绕过字典

下面的复现只是最根底的状况,然而大多数网站都或多或少做过一些加固,这里我间接贴出来我罕用的绕过字典(点击下载),一共 637 条。

大家在应用的时候,只须要将 white.domain 替换为指标容许的白名单域名即可。

1.5. 破绽实战

某网站存在“浏览原文”性能,如下图

点击后会跳转到对应的网站中,依据教训,可发现 goto 前面为一串网址的 base64 编码,因而咱们只须要结构:

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

就能够跳转到任意网站中,如:

https://xxx.com/goto/aHR0cHM6Ly9ibG9nLmdtNy5vcmcv

测试后胜利跳转:

1.6. 修复倡议

  1. 输出验证: 在承受用户输出并用于构建 URL 跳转性能之前,始终进行输出验证。确保只承受非法的 URL,并避免恶意代码的注入。
  2. 白名单验证: 对于跳转的 URL,倡议应用白名单验证,只容许跳转到当时定义的非法域名或 URL。
  3. 平安编码实际: 开发人员应遵循平安编码实际,包含对用户输出进行适当的本义和过滤,以避免歹意 URL 的结构。
  4. 正告和提醒: 在重定向之前,向用户显示明确的正告和提示信息,确保用户可能确认将要拜访的指标网站的合法性。
退出移动版