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. 正告和提醒: 在重定向之前,向用户显示明确的正告和提示信息,确保用户可能确认将要拜访的指标网站的合法性。