XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

news2025/7/13 16:46:36

一、XSS攻击是什么

XSS是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

二、XSS分类

  • 反射型XSS
    常见情况是攻击者通过构造一个恶意链接的形式,诱导用户传播和打开, 由于链接内所携带的参数会回显于页面中或作为页面的处理数据源,最终造成XSS攻击。 在这里插入图片描述
  • 存储型XSS
    存储型XSS是持久化的XSS攻击方式,将恶意代码存储于服务器端, 当其他用户再次访问页面时触发,造成XSS攻击。
    在这里插入图片描述
  • dom型XSS
    dom型XSS和反射型XSS类似,都是通过构造一个恶意链接的形式,诱导用户传播和打开,但是操作的对象是dom文档
    在这里插入图片描述
  • SVGXSS
    SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。为什么这样的SVG图片会造成跨站脚本问题呢?
    这是因为SVG是支持通过脚本语言来动态访问和修改SVG的任何内容,这点和HTML中的DOM类似,或者说完全一致。因为SVG中的所有标签和属性都已经对应了已经定义的DOM,而这种脚本语言就是JavaScript,所以我们在SVG中插入JavaScript脚本是完全能够被解析的。
//我们在一张SVG图片里面插入一个JavaScript代码。我们用浏览器打开它会发现它会造成XSS。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
   <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
   <script>alert(1)</script>
</svg>
  • PDFXSS
    PDF是一次常见的电子文档,攻击者可以通过在PDF中插入恶意代码(JavaScrip脚本)来实现PDF XSS攻击。当用户打开恶意的PDF,就会触发恶意代码,攻击者可以利用PDF XSS攻击来窃取用户的敏感信息、篡改网站信息、实施钓鱼等行为。
  • SWFXSS
    swf是flash的文件格式,flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等

三、区别

  • dom型XSS和反射型XSS的区别
    二者同样都是构造恶意的链接,但是反射型XSS数据需要流经服务器,但是dom型XSS不需要,操作的对象是本地的dom对象。
  • 反射型XSS和存储型XSS的区别
    反射型XSS是一次性的,访问一次恶意链接就执行一些,源头来自构造的恶意代码;存储型XSS是持久型的,恶意代码存储在服务器,当访问该数据时候就会执行。

四、绕过

五、有什么用

COOKIE盗取,凭据窃取,页面劫持,网络钓鱼,权限维持

六、什么是HTML实体

HTML 实体是用于在 HTML 文档中表示特殊字符的一种方式。在 HTML 里,有些字符具备特殊含义,像 < 和 > 分别用于定义 HTML 标签的开始和结束。要是你直接在 HTML 文档里使用这些字符,浏览器会把它们解析为 HTML 标签的一部分,而非普通文本。所以,为了在 HTML 中显示这些特殊字符,就得使用 HTML 实体。
实体的构成
HTML 实体由三部分构成:一个和号(&)、实体名称或者实体编号、一个分号(;)。

  • 实体名称:是易于记忆的字符串,例如 lt 代表小于号(<),gt 代表大于号(>)。
  • 实体编号:是对应的 Unicode 字符编码,例如 < 表示小于号(<),> 表示大于号(>)。

在这里插入图片描述

六、漏洞利用

  • 反射型XSS

  • 存储型XSS

  • Dom型XSS

  • PDF-XSS
    用PDF编辑器(Adobe Acrobat Reader)打开PDF文件,然后在里面写入js代码,然后找到注入点,上传PDF文件,若存在漏洞,访问上传的地址,即可触发脚本

  • SWF-XSS
    1、用Adobe Flash Professional编写一个带js脚本的恶意flash文件,然后找到注入点,上传SWF文件,若存在漏洞,访问上传的地址,即可触发脚本。
    2、用JPEXS Free Flash Decompiler 反编译工具,查看代码,找到常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等,然后找到对应的注入点,尝试注入恶意的js代码。

  • SVG-XSS
    用任意的文本编辑打开SVG文件,然后在里面写入js代码,然后找到注入点,上传SVG文件,若存在漏洞,访问上传的地址,即可触发脚本

七、漏洞利用工具

八、如何防范

  • 字符过滤
    字符过滤指的是对用户输入和输出的数据进行检查,把可能用于 XSS 攻击的特殊字符过滤掉或者转义。比如在 Web 应用里,当用户提交表单时,要对输入的内容进行检查,把 <、>、"、’ 等字符转换为 HTML 实体,防止攻击者通过输入恶意脚本来注入代码。

  • 实例化编码
    实例化编码是将用户输入的数据进行编码,让其在浏览器中以文本形式呈现,而非作为代码执行。像 HTML 实体编码、URL 编码等都是常见的编码方式。在输出用户输入内容时,对其进行 HTML 实体编码,能避免浏览器将其中的特殊字符解释为 HTML 标签或脚本代码。

  • http_only
    HttpOnly 是一个用于设置 Cookie 的属性。当一个 Cookie 被设置为 HttpOnly 后,它只能通过 HTTP 协议访问,JavaScript 脚本无法对其进行读写操作。这样就能防止攻击者通过 XSS 攻击窃取用户的 Cookie 信息。

  • CSP防护
    在这里插入图片描述

  • WAF拦截
    waf内置很多漏洞监测库,对于访问的链接都会进行检擦,若存在恶意链接会直接被禁用。

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

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

相关文章

C复习(主要复习)

指针和数组 指针数组是一个数组&#xff0c;数组的每个元素都是指针。它适用于需要存储多个指针的场景&#xff0c;如字符串数组。数组指针是一个指针&#xff0c;指向一个数组。它适用于需要传递整个数组给函数或处理多维数组的场景。 函数指针&#xff1a;函数指针的定义需要…

Ubuntu24.04搭建ESP8266_RTOS_SDK V3.4开发环境

【本文发布于https://blog.csdn.net/Stack_/article/details/147194686&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 需要有Linux使用基础&#xff0c;自行准备 1、VM17 Pro &#xff08;自行搜索教程安装&#xff09; 2、ubuntu-24.04-desktop-amd64 &#xff0…

matlab求和∑函数方程编程?

matlab求和∑函数方程编程&#xff1f; 一 题目&#xff1a;求下列函数方程式的和 二&#xff1a;代码如下&#xff1a; >> sum_result 0; % 初始化求和变量 for x 1:10 % 设…

基于Java+MySQL实现的(Web)科研资讯推送系统

科研资讯推送系统 技术选型 核心框架&#xff1a;SpringBoot 数据库层&#xff1a;springdatajpa 安全框架&#xff1a;Shiro 数据库连接池&#xff1a;Druid 缓存&#xff1a;Ehcache 部署 阿里云学生机:ecs.n4.small Tomcat:9.0 JDK:1.8 数据库:MySQL8.0 操作系统:CentOS…

PHP弱类型hash比较缺陷

目录 0x00 漏洞原因 0x01 利用方法 0x02 [BJDCTF2020]Easy MD5 1 利用md5($password,true)实现SQL注入 PHP md5弱类型比较 数组绕过 0x00 漏洞原因 1、在进行比较的时候&#xff0c;会先将两边的变量类型转化成相同的&#xff0c;再进行比较 2、0e在比较的时候会将其认…

​asm汇编源代码之-汉字点阵字库显示程序源代码下载​

汉字点阵字库显示程序 源代码下载 文本模式下显示16x16点阵汉字库内容的程序(标准16x16字库需要使用CHGHZK转换过后才能使用本程序正常显示) 本程序需要调用file.asm和string.asm中的子程序,所以连接时需要把它们连接进来,如下 C:\> tlink showhzk file string 调用参…

Excel 中让表格内容自适应列宽和行高

Excel 中让表格内容自适应列宽和行高 目录 Excel 中让表格内容自适应列宽和行高自适应列宽自适应行高在Excel中让表格内容自适应列宽和行高,可参考以下操作: 自适应列宽 方法一:手动调整 选中需要调整列宽的列(如果是整个表格,可点击表格左上角行号和列号交叉处的三角形全…

Java使用ANTLR4对Lua脚本语法校验

文章目录 什么是ANTLR&#xff1f;第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Grammar文件maven配置生成Lexer Parser Listener Visitor代码新建实体类Lua语法遍历器语法错误监听器单元测试 参考 什么是ANTLR&#xff1f; https://www.antlr.org/ ANTLR (ANothe…

vue3.2 + element-plus 实现跟随input输入框的弹框,弹框里可以分组或tab形式显示选项

效果 基础用法&#xff08;分组选项&#xff09; 高级用法&#xff08;带Tab栏&#xff09; <!-- 弹窗跟随通用组件 SmartSelector.vue --> <!-- 弹窗跟随通用组件 --> <template><div class"smart-selector-container"><el-popove…

Windows VsCode Terminal窗口使用Linux命令

背景描述&#xff1a; 平时开发环境以Linux系统为主&#xff0c;有时又需要使用Windows系统下开发环境&#xff0c;为了能像Linux系统那样用Windows VsCode&#xff0c;Terminal命令行是必不可少内容。 注&#xff1a;Windows11 VsCode 1.99.2 下面介绍&#xff0c;如何在V…

负载均衡的实现方式有哪些?

负载均衡实现方式常见的有: 软件负载均衡、硬件负载均衡、DNS负载均衡 扩展 二层负载均衡&#xff1a;在数据链路层&#xff0c;基于MAC地址进行流量分发&#xff0c;较少见于实际应用中 三层负载均衡&#xff1a;在网络层&#xff0c;基于IP地址来分配流量&#xff0c;例如某…

LWIP学习笔记

TCP/ip协议结构分层 传输层简记 TCP&#xff1a;可靠性强&#xff0c;有重传机制 UDP&#xff1a;单传机制&#xff0c;不可靠 UDP在ip层分片 TCP在传输层分包 应用层传输层网络层&#xff0c;构成LWIP内核程序&#xff1a; 链路层&#xff1b;由mac内核STM芯片的片上外设…

Nodejs Express框架

参考&#xff1a;Node.js Express 框架 | 菜鸟教程 第一个 Express 框架实例 接下来我们使用 Express 框架来输出 "Hello World"。 以下实例中我们引入了 express 模块&#xff0c;并在客户端发起请求后&#xff0c;响应 "Hello World" 字符串。 创建 e…

Visual Studio Code 开发 树莓派 pico

开发环境 MCU&#xff1a;Pico1&#xff08;无wifi版&#xff09;使用固件&#xff1a;自编译版本开发环境&#xff1a;Windows 10开发工具&#xff1a;Visual Studio Code 1.99.2开发语言&#xff1a;MicroPython & C 插件安装 找到Raspberry Pi Pico并安装开启科学上网…

Python与R语言用XGBOOST、NLTK、LASSO、决策树、聚类分析电商平台评论信息数据集

全文链接&#xff1a;https://tecdat.cn/?p41501 分析师&#xff1a;Rui Liu 在当今数字化浪潮席卷的时代&#xff0c;电商市场的蓬勃发展犹如一部波澜壮阔的史诗&#xff0c;蕴藏着无尽的商业价值与潜力。电商平台积累的海量数据&#xff0c;宛如一座等待挖掘的宝藏&#xff…

半导体制造如何数字化转型

半导体制造的数字化转型正通过技术融合与流程重构&#xff0c;推动着这个精密产业的全面革新。全球芯片短缺与工艺复杂度指数级增长的双重压力下&#xff0c;头部企业已构建起四大转型支柱&#xff1a; 1. 数据中枢重构产线生态 台积电的「智慧工厂4.0」部署着30万物联网传感器…

LabVIEW 程序持续优化

LabVIEW 以其独特的图形化编程方式&#xff0c;在工业自动化、测试测量、数据分析等众多领域发挥着关键作用。为了让 LabVIEW 程序始终保持高效、稳定&#xff0c;并契合不断变化的实际需求&#xff0c;持续改进必不可少。下面将从多个关键维度&#xff0c;为大家细致地介绍通用…

Windows10系统RabbitMQ无法访问Web端界面

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目场景&#xff1a; 在一个基于 .NET 的分布式项目中&#xff0c;团队使用 RabbitMQ 作为消息队列中间件&#xff0c;负责模块间的异步通信。开发环境为 Windows 10 系统&#xff0c;开发人员按照官…

初阶数据结构--链式二叉树

二叉树&#xff08;链式结构&#xff09; 前面的文章首先介绍了树的相关概念&#xff0c;阐述了树的存储结构是分为顺序结构和链式结构。其中顺序结构存储的方式叫做堆&#xff0c;并且对堆这个数据结构进行了模拟实现&#xff0c;并进行了相关拓展&#xff0c;接下来会针对链…

SpringAI版本更新:向量数据库不可用的解决方案!

Spring AI 前两天&#xff08;4.10 日&#xff09;更新了 1.0.0-M7 版本后&#xff0c;原来的 SimpleVectorStore 内存级别的向量数据库就不能用了&#xff0c;Spring AI 将其全部源码删除了。 此时我们就需要一种成本更低的解决方案来解决这个问题&#xff0c;如何解决呢&…