1.1. 破绽介绍
URL 跳转破绽(URL Redirection Vulnerability)又叫凋谢重定向破绽(Open Redirect Vulnerability),是一种常见的网络安全破绽,它存在于许多网站和应用程序中。该破绽的根本原因是没有对用户提供的 URL 进行充沛的验证和过滤,导致攻击者能够通过结构歹意 URL,将用户重定向到任意的网站或应用程序中。
1.2. 破绽危害
以攻打用户客户端为主,对服务器自身不造成影响。
- 钓鱼攻打: 攻击者能够将用户重定向到伪装成非法网站的钓鱼网站,以获取用户的敏感信息,如用户名、明码、银行账户等。
- 恶意软件流传: 攻击者能够将用户重定向到歹意网站,从而下载和装置恶意软件,对用户设施进行感化。
- 网络针对性攻打: 攻击者能够将用户重定向到特定的歹意网站,利用浏览器或插件破绽来攻打用户的零碎。
- 品牌名誉受损: 歹意重定向可能会导致受攻打网站的品牌名誉受损,用户会失去对该网站的信赖。
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. 修复倡议
- 输出验证: 在承受用户输出并用于构建 URL 跳转性能之前,始终进行输出验证。确保只承受非法的 URL,并避免恶意代码的注入。
- 白名单验证: 对于跳转的 URL,倡议应用白名单验证,只容许跳转到当时定义的非法域名或 URL。
- 平安编码实际: 开发人员应遵循平安编码实际,包含对用户输出进行适当的本义和过滤,以避免歹意 URL 的结构。
- 正告和提醒: 在重定向之前,向用户显示明确的正告和提示信息,确保用户可能确认将要拜访的指标网站的合法性。