目录
本文通过《webug4靶场第26关 URL不安全跳转》来进行URL重定向攻击渗透实战。
一、URL不安全跳转
1、渗透原理
攻击者通过传入的URL参数,网站未进行检查或过滤不严,导致跳转到恶意网站
URL重定向不安全跳转(URL任意跳转)通常是由于网站信任了用户的输入导致恶意攻击,利用url重定向主要用来钓鱼,比如URL跳转中最常见的跳转在登陆口,支付口,也就是一旦登陆将会跳转任意自己构造的网站,如果设置成自己的url则会造成钓鱼,浅析危害。
- 正常情况下,Web 应用程序会根据用户的操作或业务逻辑,将用户重定向到合法的目标 URL。例如,用户登录成功后,系统会将用户重定向到其个人主页。
- 然而,当存在 URL 重定向漏_洞时,攻击者可以通过修改重定向参数的值,将用户重定向到攻击者指定的任意 URL。这可能是一个钓鱼网站,用于骗取用户的敏感信息,如用户名、密码、银行卡号等;也可能是一个包含恶意软件的网站,用于感染用户的设备;或者是用于执行其他类型的攻击,如跨站脚本攻击(XSS)等。
2、发生场景
(1) 登陆跳转是最常见的跳转类型,认证完后会跳转,所以在登陆的时候建议多观察url参数
(2) 用户分享、收藏内容过后,会跳转
(3) 跨站点认证、授权后,会跳转
(4) 站内点击其它网址链接时,会跳转
(5) 在一些用户交互页面也会出现跳转,如请填写对客服评价,评价成功跳转主页,填写问卷,等等业务,注意观察url。
(6) 业务完成后跳转这可以归结为一类跳转,比如修改密码,修改完成后跳转登陆页面,绑定银行卡,绑定成功后返回银行卡充值等页面,或者说给定一个链接办理VIP,但是你需要认证身份才能访问这个业务,这个时候通常会给定一个链接,认证之后跳转到刚刚要办理VIP的页面。
二、URL跳转渗透实战
1、打开靶场26关
注意网站的右上角,接下来点击此处
http://192.168.71.1/webug4/control/more/url_redirect.php
点击红框处,如下所示弹出baidu网址
接下来点击百度
http://192.168.71.1/webug4/control/more/url_redirect.php?url=https://www.baidu.com
此时跳到百度网址
2、代码审计
如下所示传入的参数为URL,并执行header("Location: {$url}");操作,这里并未对url进行过滤。
<?php
require_once "../../common/common.php";
if (!isset($_SESSION['user'])) {
header("Location:../login.php");
}
if (isset($_GET["url"])) {
if (!empty($_GET["url"])) {
$url = $_GET['url'];
header("Location: {$url}");
}
}
require_once TPMELATE."/url_redirect.html";
3、元素修改渗透
在第27关靶场后,点击主页右上角后进入如下页面。此时鼠标放到页面中间的百度处,右键鼠标选择元素,如下所示在查看器中可以看到href的url地址
如下所示,此时URL的信息为
<a href="?url=https://www.baidu.com">百度</a>
将其修改为腾讯,并将网址url改为https://www.qq.com,如下所示
<a href="?url=https://www.qq.com">腾讯</a>
修改后页面如下所示
此时点击腾讯,跳到了qq的腾讯主页
4、手动修改URL地址渗透
任意修改url可以造成url跳转:如www.qq.com
192.168.71.1/webug4/control/more/url_redirect.php?url=https://www.qq.com
如下所示跳转成功
三、防御方法
- 严格验证目标 URL:在进行重定向之前,对目标 URL 进行严格的验证,确保其属于合法的域名和路径范围。可以使用白名单机制,只允许重定向到预先定义好的合法 URL 列表中地址。
- 对重定向参数进行编码和过滤:对重定向参数进行编码,防止攻击者通过修改参数值来注入恶意 URL。同时,对参数进行过滤,去除任何可能包含恶意代码或非法字符的内容。
- 避免使用用户可控的重定向:尽量减少使用用户可以直接控制的重定向功能。如果必须使用,要对用户输入进行严格的限制和验证,避免用户输入任意的 URL。
- 实施安全的重定向策略:采用安全的重定向方式,如使用服务器端的重定向函数,而不是通过客户端的 JavaScript 进行重定向。这样可以减少攻击者利用客户端脚本进行攻击的可能性。
- 进行安全测试:在应用程序的开发和测试阶段,进行全面的安全测试,包括对 URL 重定向功能的测试,以发现和修复潜在的漏_洞。