Webug4.0靶场通关笔记21- 第26关URL不安全跳转

目录

一、URL不安全跳转

1、渗透原理

2、发生场景

二、URL跳转渗透实战

1、打开靶场26关

2、代码审计

3、元素修改渗透

4、手动修改URL地址渗透

三、防御方法


本文通过《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 重定向功能的测试,以发现和修复潜在的漏_洞。
### Web 安全靶场 Webug 4.0 中越权修改密码的解决方案 在 Web 应用程序的安全测试中,“越权访问”是一种常见的漏洞,指的是未经授权的用户能够执行超出其权限范围的操作。对于 Webug 4.0 靶场中的越权修改密码场景,以下是详细的分析与解决方法。 #### 背景描述 在 Webug 4.0 的设计中,存在一种典型的越权行为模式:攻击者可以通过篡改 HTTP 请求参数(如 `id` 字段),从而冒充其他用户的身份并修改目标用户的密码[^4]。这种漏洞通常源于应用程序未对操作对象的有效性和当前登录用户的权限进行严格验证。 --- #### 技术原理剖析 越权漏洞的核心原因在于服务器端缺乏有效的身份校验机制。具体表现为以下几点: 1. **请求参数未经验证** 当前用户发送的请求可能携带了非法的目标用户 ID 参数(例如 `id=0` 表示管理员)。如果服务端仅依赖前端传递的数据而未进一步确认该数据的真实性,则可能导致越权。 2. **缺少细粒度授权控制** 如果应用未能区分同角色之间的权限边界,就容易让低权限用户获得高权限功能的使用权。 3. **会话管理当** 即使实现了基于会话的身份认证,但如果会话状态没有绑定到具体的资源访问上下文中,也可能引发类似的越权问题。 --- #### 解决方案实现 针对上述问题,可以从以下几个方面入手来修复此漏洞: ##### 1. 强化后端逻辑校验 每次接收到涉及敏感操作(如更改密码)的请求时,应强制核对该操作是否由合法主体发起。这可通过比较当前已登录账户的信息与待处理记录所属实体的一致性完成。例如,在 PHP 或 Python 后端代码中加入如下片段以确保只有本人能重置自己的密码: ```php <?php // 假设 $_SESSION['user_id'] 存储着当前登录者的唯一标识符 if ($_POST['target_user_id'] != $_SESSION['user_id']) { die('Access Denied'); // 若两者符则拒绝继续运行后续脚本 } ?> ``` 或者采用更现代化的语言框架编写类似防护措施: ```python from flask import session, request, abort def change_password(): target_user_id = int(request.form.get('target_user_id')) current_user_id = session.get('user_id') if target_user_id != current_user_id: abort(403) # 返回HTTP Forbidden响应码表示无权访问 # 正常业务流程... ``` 以上两段伪代码均体现了只允许用户对自己账号实施特定变更的原则。 ##### 2. 实施严格的 RBAC (Role-Based Access Control) 引入基于角色的访问控制系统有助于细化各类人员所能触及的功能模块及其内部细节。通过预先定义好的策略组合判定谁可以在何时何地做什么事情,进而减少因疏忽造成的安全隐患。 例如,在 MySQL 数据库表结构层面增加字段用于标记每条记录联的角色类别,并据此调整查询语句条件部分的内容以便筛选出符合条件的结果集之前先过滤掉符合要求的部分。 ##### 3. 利用 CSRF Token 提升安全性 为了防止恶意站点诱导受害者提交伪造跨站请求(CSRF),建议结合随机生成且难以预测的一次性令牌(Token)一同嵌入至 HTML 表单之中并与对应 Session 绑定起来共同参与最终判断过程。这样即使黑客截获到了原始 POST 请求也无法轻易复制粘贴成功模拟真实交互动作。 --- #### 总结说明 综上所述,要彻底杜绝此类越权现象的发生除了加强开发阶段的设计考量之外还需要持续注最新威胁情报动态及时修补发现的新缺陷。同时也要提醒广大开发者时刻牢记安全第一的理念贯穿整个软件开发生命周期始终。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值