【Java代码审计】XSS漏洞产生原理及其修复

news2024/11/24 13:56:24

XSS漏洞代码审计

  • 前言
  • XSS漏洞原理
  • 1、反射型XSS
    • 反射型XSS漏洞审计
  • 2、存储型XSS
    • 存储型XSS审计
  • 漏洞修复

前言

笔者已经很长时间没有写过笔记力,经过一年的摸爬滚打也算是走到了代码审计这一关,这些日子也还在为项目和hw周旋,上周终于面试完,事少些,尽力开启周更or日更状态,从零开始的Java代审学习。
对于渗透测试学习以我目前为止的理解来说的话最重要的就是动手实践,我甚至觉得实践和理论知识在渗透的占比中55开,所以代码审计也不要懒,带着项目狠狠的了解原理和调试他!

本文使用源码此处

XSS漏洞原理

三个关键字:参数必须传递到后端、参数必须可控、参数必须被浏览器解析
跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
简而言之,开发者未对传递的参数进行过滤,我们可以输入恶意的js代码使其前端解析并执行,造成xss攻击。

1、反射型XSS

关注从用户可控终端(一般是指前端用户输入)传入后端的参数且返回给浏览器被解析。
常见获取前端参数方式
1、场景1:使用Servlet技术:request.getParameter(“name”)
在这里插入图片描述
2、场景2:使用Struts2框架:

(1)通过Action类绑定参数或model获取前端的参数
在这里插入图片描述
(2)通过Action的属性接收参数:
在这里插入图片描述
3、场景3:使用SpringMVC获取前端参数:
(1)对象方式(类似于struts2的对象绑定方式)
在这里插入图片描述
(2)自定义方法参数名(使用注解参数绑定的形式)
在这里插入图片描述
(3)使用requestbody绑定注解获取参数在这里插入图片描述
(4)使用request获取参数值
在这里插入图片描述

参考链接此处

反射型XSS漏洞审计

1、在前端页面测试1文本框中输入,提交到后端在这里插入图片描述
2、进入后端发现未对来自前端的参数处理且直接反馈给前端,前端在右上图中直接渲染触发反射性XSS漏洞在这里插入图片描述
3、同理在测试2Input框中输入alert(1),提交后端发现对提交到后端发现对特殊字符进行过滤且进行防大小写过滤处理
在这里插入图片描述
在这里插入图片描述
4、在测试4中input框中提交提交到后端使用ESAPI,发现已经被编码处理
在这里插入图片描述
在这里插入图片描述

2、存储型XSS

存储型XSS审计

存储型XSS又称持久型XSS,攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性。
攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中。当用户进行正常访问时,触发XSS代码。
这里用到的是另一套框架进行的审计,主要说下思路。

1、查找从数据库查询数据并且显示在前端的爆发点
在这里插入图片描述
2、通过代码可得将用户要修改的数据显示在前端(去确定能够成功修改成js脚本)
在这里插入图片描述
在这里插入图片描述
3、提交数据进入后端追踪数据库确定非法参数是否会被过滤,调用以下方法修改用户信息,在最后一行进入service执行修改业务逻辑
在这里插入图片描述
4、同样在业务层处理完其他的业务后依旧调用了dao的修改用户信息的sql操作方法
在这里插入图片描述
5、调用mapping.xml利用mybatis执行了数据库的update操作,到此发现未进行安全处理,基本确定存在存储型XSS漏洞
在这里插入图片描述
在这里插入图片描述
6、到数据库里边去确定我们的非法字符是否成功插入到库中
在这里插入图片描述
7、最后需要看是否能触发(不能触发不代表不是漏洞,不能触发是前端的标签没有闭合导致浏览器解析不成功)
(1)用户名称位置上的JS脚本被成功解析(未编码处理)
在这里插入图片描述
在这里插入图片描述
(2)进入到详情页浏览器不能解析该字段的JS脚本(原因可能是闭合不成功导致浏览器不能解析)
在这里插入图片描述
(3)想法构造闭合使其浏览器解析JS脚本
在这里插入图片描述
(4)按照特征闭合后依然不能触发,发现此详情页面已经被编码处理无法构造(Textarea标签自带转义功能)
在这里插入图片描述
在这里插入图片描述
(5)之前用户列表用户名字段中JS能被解析是因为在这里插入图片描述
(6)点击修改用户页面只有重新构造用户名字段(必须成功闭合),点击保存提交,同样发现会触发XSS
在这里插入图片描述
在这里插入图片描述

漏洞修复

1、配置过滤器之后,编辑用户信息

在这里插入图片描述
在这里插入图片描述
2、查看输入的用户名称是否被过滤处理,发现用户名称已经被过滤处理

(1)进入后端发现该字段已经被处理
(2)从数据库查看插入到数据库的字段已经被过滤
在这里插入图片描述
(3)最后进入前端查看确实用户名称已经被安全编码,从而避免了触发XSS漏洞
在这里插入图片描述
修复总结
一般通过XSS全局过滤器进行对request中的所有参数拦截处理,对用户输入的内容进行非法字符的判断,如果还有非法字符,例如’、”、<、>等编码转义处理,使其浏览器不能解析此类字符,在java中一般采用的封装了ESAPI的XSS的Filter处理。

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

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

相关文章

今年是很惨,但有人怒砍一大把Offer...

300万字&#xff01;全网最全大数据学习面试社区等你来&#xff01; 今天的主人公是一个应届生&#xff0c;同时也是我在训练营辅导的一名同学&#xff0c;在整体经济下行&#xff0c;互联网见顶的情况拿到包括腾讯、蚂蚁、B站等多家互联网大厂Offer。 下面是我站在求职者角度提…

DDL语句DQL语句

SQL学习笔记 DDL语句--操作数据表 /* 快捷键: insert键 在插入 和 替换模式之间切换 ctrl 字母z 撤销上一步操作 tab 往后缩进(默认4个空格) shift tab 往前缩进(默认4个空格) …

基于Java+SpringBoot+Vue学生信息管理设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

重磅发布:《AI产品经理的实操手册(2023版)》

今天是咱们社群“AI产品经理大本营”六周年活动的最后一天&#xff0c;正式发布这份大家和我都非常期待的重磅干货——《AI产品经理的实操手册&#xff08;2023版&#xff09;》 上周发布的“AI季度资料包&#xff08;2023Q2&#xff09;”&#xff0c;适合对AI初步感兴趣的产品…

《统计学习方法》——隐马尔可夫模型(中)

概率计算算法 直接计算法 给定模型 λ ( A , B , π ) \lambda(A,B,\pi) λ(A,B,π)和观测序列 O ( o 1 , o 2 , ⋯ , o T ) O(o_1,o_2,\cdots,o_T) O(o1​,o2​,⋯,oT​)&#xff0c;计算观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。最直接的方法就是…

『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)

目录 1. 窗口切换2. 抓取拉勾网职务信息2.1 拉勾网查看职务详情与价格2.2 完整代码 3. iframe的处理总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1. 窗口切换 窗口句柄的定义&#xff1a;WebDriver对象有wi…

肝一肝设计模式【八】-- 外观模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…

Windows本地快速搭建SFTP文件服务器,并端口映射实现公网远程访问

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

作者&#xff1a;Baha Azarmi 你可能已经阅读过这篇关于我们将 Elasticsearch 的相关性功能与 OpenAI 问答功能相结合的博文。 该帖子的主要思想是说明如何将 Elastic 与 OpenAI 的 GPT 模型结合使用来构建响应并向用户返回上下文相关的内容。 我们构建的应用程序可以公开一个…

好久不见,甚是想念

大家好&#xff0c;我是程序员小哈。 一晃停更好久了&#xff0c;之前因为12月份阳了&#xff0c;身体一直感觉没有完全恢复&#xff0c;就一直偷懒了&#xff0c;外加单位的事情比较多&#xff0c;实在是分身乏术&#xff0c;最近总算是告一段落了&#xff0c;咱们的知识分享…

shell脚本——流编辑器“三剑客”之sed命令

shell脚本——流编辑器“三剑客”之sed命令 一、流编辑器“三剑客”二、sed编辑器1、sed的工作流程2、命令格式3、常用选项4、常用操作5、打印内容6、使用地址7、删除行8、替换9、插入 一、流编辑器“三剑客” sed awk grep 二、sed编辑器 sed是一种流编辑器&#xff0c;流编…

手把手项目实战,搞完,直接写在简历上!

大家好&#xff0c;我是田哥 很多没有项目经验&#xff0c;或者没有亮点项目的朋友可以看过来。 最近田哥在搞一个项目&#xff1a;充电桩项目。本文给大家介绍这个项目背景、部分原型图、核心功能、核心模块、技术栈等。 项目背景介绍 随着我国汽车行业的不断发展&#xff0c…

AI绘画-Midjourney基础1-基本操作

Midjourney是一款 AI 绘画工具&#xff0c;可以根据你的提示&#xff08;本文中称为 prompt&#xff09;创作出各种图像。你只需要在Discord上和一个机器人聊天&#xff0c;就可以用简单的命令来控制它。目前已不支持免费试用&#xff0c;可以选择付费计划来获得更多功能和优势…

Ae 效果详解:Roto 笔刷和调整边缘

使用 Roto 笔刷工具或调整边缘工具之后&#xff0c;Ae 会向图层应用“Roto 笔刷和调整边缘” Roto Brush & Refine Edge效果。 版本 Version 目前包括 1.0&#xff08;经典&#xff09;1.0 Classic和 2.0 两个版本。 品质 Quality 选择围绕边缘的细节质量。 --标准 Stan…

传输时延和传播时延(补充:频段,信道带宽,数据速率的区别,以及帧大小和帧长)

先来看例题&#xff0c;看是否能区分 例题1&#xff1a; 假设生产管理网络系统采用B/S工作方式&#xff0c;经常上网的用户数为150个&#xff0c;每用户每分钟产生8个事务处理任务&#xff0c;平均事务章大小为0.05MB&#xff0c;则这个系统需要的信息传输速率为(68)。 (68)A…

Node接入ChatGPT 的最强对手Claude

由于个人的chatGPT免费版本即将到期, Claude 很火&#xff0c;在网上被说成是 ChatGPT 的最强对手&#xff0c;是 ChatGPT 的替代品。本文我将介绍下 Claude 是什么&#xff0c;以及如何免费使用 Claude. 什么是Claude 看一下它是如何自我介绍的 Slack Slack 是一款流行的团…

在 Transformers 中使用对比搜索生成可媲美人类水平的文本

1. 引言 自然语言生成 (即文本生成) 是自然语言处理 (NLP) 的核心任务之一。本文将介绍神经网络文本生成领域当前最先进的解码方法 对比搜索 (Contrastive Search)。提出该方法的论文 “A Contrastive Framework for Neural Text Generation” 最初发表于 NeurIPS 2022 ([论文]…

目标检测创新:一种基于区域的半监督方法,部分标签即可(附原论文下载)...

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 论文地址&#xff1a;https://arxiv.org/pdf/2201.04620v1.pdf 计算机视觉研究院专栏 作者&#xff1a;Edison_G 研究表明&#xff0c;当训练数据缺少…

招募:AICG内容联合创作计划 | AIGC实践

AIGC&#xff08;AI Generated Content&#xff0c;人工智能自动生成内容&#xff09;必将成为小微创业团队进行低成本内容运营的最佳实践。 你同意这个观点吗&#xff1f; 如果我们恰好想法一致&#xff0c;或许可以一起搞点事情&#xff0c;探索一下商业场景下&#xff0c;应…

ChatGPT prompt指令大全

ChatGPT prompt指令大全 更多Prompt自动使用&#xff0c;可以在chrome插件中搜索 WebChatGPT&#xff0c;没有账号的&#xff0c;可以拉到文章最下面。 目录 担任雅思写作考官 写小说 充当 Linux 终端 充当英语翻译和改进者 充当论文润色者&#xff08;拿摘要部分举例&am…