【Java代码审计】URL跳转漏洞篇

news2024/12/22 19:01:22

【Java代码审计】URL跳转漏洞篇

  • 1.URL跳转漏洞概述
  • 2.Java中的URL重定向
  • 3.URL跳转漏洞修复

1.URL跳转漏洞概述

通俗地说,目前很多的Web应用因为业务需要,需与内部的其他服务或者第三方的服务进行交互,这样就需要重定向的功能,由当前网页跳转到第三方的网页

下面是URL跳转典型的实现代码:通过Header的重定向功能实现URL的跳转:

response.sendRedirect(redirectUrl);

URL跳转漏洞存在于URL跳转功能的业务系统中,若服务端对接收URL跳转的参数没有进行过滤和限制,攻击者就有可能构造一个恶意的URL地址,诱导其他用户访问恶意的网站

因为是从可信站点跳转而来的,故很多用户的安全意识比较薄弱,这样攻击者就可以在用户没有察觉的情况下通过可信站点跳转至事先搭建的钓鱼网站进行钓鱼攻击,URL跳转漏洞的危害很多,除了常见的钓鱼攻击,还能进行绕过聊天工具的检测等一系列操作

一般来讲,对于URL跳转漏洞在黑盒测试时主要的关注点为:注意URL中是否带有return、redirect、url、jump、goto、target、link等参数值,并注意观察后跟的URL地址的具体格式,再构造相应的payload尝试跳转。在白盒审计中我们则会重点关注可以进行URL跳转的相关方法


2.Java中的URL重定向

1、通过ModelAndView方式

@RequestMapping("/redirect")
public ModelAndView redirect() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("redirect:/home"); // 通过重定向方式跳转到"/home"
    return modelAndView;
}

2、通过返回String方式

@RequestMapping("/redirect")
public String redirect() {
    return "redirect:/home"; // 通过重定向方式跳转到"/home"
}

3、使用sendRedirect方式

@RequestMapping("/redirect")
public void redirect(HttpServletResponse response) throws IOException {
    response.sendRedirect("/home"); // 重定向到"/home"
}

4、使用RedirectAttributes方式

对于一般的URL跳转,使用redirect即可满足要求。如果需要进行参数拼接,则一般使用RedirectAttributes

@RequestMapping("/home")
public String home(RedirectAttributes redirectAttributes) {
    redirectAttributes.addAttribute("name", "John"); // 添加参数
    return "redirect:/welcome"; // 重定向到"/welcome",参数会被自动拼接到URL中
}

5、通过设置Header来进行跳转

@RequestMapping("/oldUrl")
public void redirectToNewUrl(HttpServletResponse response) throws IOException {
    String newUrl = "/newUrl";
    response.setStatus(HttpServletResponse.SC_FOUND); // 设置302状态码
    response.setHeader("Location", newUrl); // 设置跳转的URL
}

通过上面这些方法可以总结出URL跳转漏洞一些常见的关键字如下:

在这里插入图片描述


3.URL跳转漏洞修复

对于URL跳转漏洞,最有效的防御手段之一是严格控制要跳转的域名。若已知需要跳转URL,则可以直接在源码中写为固定值,例如:

@RequestMapping("/safeRedirect")
public String safeRedirect() {
    // 固定的跳转URL
    String targetUrl = "https://www.example.com/safe-page";
    return "redirect:" + targetUrl;
}

当然,也可以使其只能根据路径跳转,而不是根据其URL跳转:

例如“http://localhost:8080/urlRedirect/forward?url=/urlRedirect/test

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上市十年 这家互联网服务平台窥见汽车市场“沧海桑田”

十年,对于一家上市公司而言意味着什么?以中概股为例,十年里的高低起伏,折射出不同公司和行业的各异命运。 新浪在2021年私有化退市,曾经名声在外的聚美优品在2020年遭遇同样命运。再往前数,还有离开美股回…

浅谈ASO优化如何应对市场竞争的挑战

随着应用市场的竞争越来越激烈,ASO优化也要为了应对各种来临的风险与机遇做出改变,提高自己的适应能力,下面小柚整理了一些思路供大家参考。 1. 深入了解目标用户需求:首先,需要深入了解目标用户的需求和痛点&#xf…

【LeetCode刷题笔记(11-1)】【Python】【和为 K 的子数组】【前缀和】【中等】

文章目录 引言和为 K 的子数组题目描述提示 解决方案1:【暴力枚举】解决方案2:【前缀和】结束语 和为 K 的子数组 引言 编写通过所有测试案例的代码并不简单,通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例,但…

985等高校急速开设“鸿蒙班”,引领IT就业新时代

​根据澎湃新闻记者了解到,华为以及鸿蒙系软件厂商都在积极培养鸿蒙开发人才。其中产学联动、产教融合来培养鸿蒙生态人才是重要的一条路径,目前已有 23 家 985 高校、46 家 211 高校已开设或即将开设HarmonyOS 相关课程。 其中南京大学已经将 HarmonyOS…

一套rk3588 rtsp服务器推流的 github 方案及记录 -03(完结)

opencv 解码记录 解码库使用的时候发现瑞芯微以前做过解码库对ffmpeg和gstreamer的支持 然后最近实在不想再调试Rtsp浪费时间了,就从这中间找了一个比较快的方案 ffmpeg 带硬解码库编译 编译流程参考文献 https://blog.csdn.net/T__zxt/article/details/12342435…

【网络安全】—Shell编程入门(2)

文章目录 循环控制语句函数知识精讲数组知识精讲开发环境规范调试优化实践自动化实战项目 在前面的章节中,我们已经介绍了Shell编程的基础知识,包括变量、特殊变量、数值计算、条件测试、条件判断和基本的循环语句。接下来,我们将深入讲解更高…

还在用QQ拼音输入法吗?赶快卸载吧~!

最近总觉得我的C盘在莫名其妙的减少。之前的电脑C盘只有240G,所以我很在意C盘空间。但是,我发现买了新电脑,C盘空间也在莫名其妙减少。 随挨个文件夹检查。最后发现,QQ拼音的 dict 文件夹很大,居然有 30G多G。 30多~…

华为安防监控摄像头

华为政企42 华为政企 目录 上一篇华为政企城市一张网研究报告下一篇华为全屋wifi6蜂鸟套装标准

Linux学习(3)——基本命令-文件

1、cat:查看文件内容--上下合并文件 注意:cat只能查看普通的文本文件 如果文件内容过多会显示不全 选项效果-n显示行号包括空行-b跳过空白行编号;注意,在一行打了空格不算空白行,enter键直接跳过这一行才算-s将所有连续…

智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.饥饿游戏算法4.实验参数设定5.算法结果6.…

本地配置Java支付宝沙箱环境模拟支付并内网穿透远程调试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

常见的Web攻击手段分析总结,实战案例:通过 X-Forwarded-Host 的密码重置令牌泄漏

常见的Web攻击手段分析总结,实战案例:通过 X-Forwarded-Host 的密码重置令牌泄漏。 常见的 Web 攻击手段主要有 XSS 攻击、CSRF 攻击、SQL 注入攻击、DDos 攻击、文件漏洞攻击等。这几种攻击方式的防护手段并不复杂,却还是有很多企业遭受了该攻击,朔源到头,还是因为人为的…

LeetCode 热题100——单调栈

​ 个人主页:日刷百题 系列专栏:〖C语言小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 写在前面: 递增单调栈:栈中元素从栈底到栈顶依次增大 递减单调栈…

SE-Net:Squeeze-and-Excitation Networks(CVPR2018)

文章目录 AbstractIntroduction表征的重要性以前的方向本文提出 Related WorkDeeper ArchitectureAlgorithmic Architecture SearchAttention and gating mechanisms Squeeze-and-Excitation BlocksSqueeze: Global Information EmbeddingExcitation: Adaptive RecalibrationIn…

Temporary failure in name resolution

报错: 1.打开resolv.conf文件 sudo vim /etc/resolv.conf 2. 确保resolv.conf文件至少包含一个名称服务器。列出名称服务器的行应如下所示: 3. 保存文件并退出。 4. 接下来,重新启动DNS 解析器服务。运行以下命令: sudo syste…

androidStudio版本下载链接记录

androidStudio 最新官网版本: 下载 Android Studio 和应用工具 - Android 开发者 | Android DevelopersAndroid Studio 提供了一些应用构建器以及一个已针对 Android 应用进行优化的集成式开发环境 (IDE)。立即下载 Android Studio。https://developer.android.g…

创建型模式 | 原型模式

一、原型模式 1、原理 原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。原型像是一个模板,可以基于它复制好多…

二叉树题目:输出二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:输出二叉树 出处:655. 输出二叉树 难度 6 级 题目描述 要求 给定二叉树的根结点 root \textt…

探索未来交通!空客、宝马开启新一轮“量子计算挑战赛”

12月6日,空中客车公司和宝马集团共同发起了一项名为 “量子交通探索”的全球量子计算挑战赛,以应对航空和汽车领域最紧迫的挑战——这些挑战对于传统计算机而言仍然是难以克服的。 这项挑战是首创性的,它将两个全球行业领导者聚集在一起&…

堆的时间复杂度

1、堆排序的时间复杂度为O(nlogn) 2、对N个元素建堆的时间复杂度为O(N),删除堆顶元素的时间复杂度为O(logN),因此删除堆所有元素的时间复杂度为O(NlogN)。 3、不管数组初始时是有序的还是逆序的,堆排序都会先建堆,变成了堆序的性…