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

一、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.mzph.cn/diannao/79065.shtml

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

相关文章

vue + element-plus自定义表单验证(修改密码业务)

写一个vue组件Password.vue 没有表单验证只有3个表单项 <template><div><el-form><el-form-item label"旧密码"><el-input></el-input></el-form-item><el-form-item label"新密码"><el-input>&l…

Linux下使用MTK的SP_Flash_tool刷机工具

MTK的SP_Flash_tool刷机工具安装流程如下&#xff1a; 1、解压SP_Flash_Tool_Linux_v5.1336.00.100_Customer.zip unzip SP_Flash_Tool_exe_Linux_64Bit_v5.1520.00.100.zip 2、首先安装 libusb-dev 这个包&#xff1a; sudo apt-get install libusb-dev 3、安装成功之后…

基于 PyGetWindow 获取窗口信息和控制窗口

PyGetWindow 是基于Python的一款简单、跨平台的模块&#xff0c;用来获取窗口信息和控制窗口。可以实现的功能有&#xff1a; 获取当前系统中所有打开窗口的列表。 根据窗口标题、窗口句柄等属性获取特定的窗口对象。 激活、最小化、最大化和关闭窗口。 获取和设置窗口的位置、…

STM32硬件IIC+DMA驱动OLED显示——释放CPU资源,提升实时性

目录 前言 一、软件IIC与硬件IIC 1、软件IIC 2、硬件IIC 二、STM32CubeMX配置KEIL配置 三、OLED驱动示例 1、0.96寸OLED 2、OLED驱动程序 3、运用示例 4、效果展示 总结 前言 0.96寸OLED屏是一个很常见的显示模块&#xff0c;其驱动方式在用采IIC通讯时&#xff0c;常用软件IIC…

【ozone工具使用指南】基于keil使用ozone创建一个调试工程

前言&#xff1a;一般调试嵌入式工程代码最常见的方式是基于keil上面DEBUG&#xff0c;使用这种最古老的方式虽然也很方便&#xff0c;但是一些功能并没有办法体现&#xff0c;比如变量的变化曲线或者波形并无法直观的显示出来&#xff0c;ozone这个工具就结合了上面提到的比ke…

【ROS2】行为树 BehaviorTree(五):详细学习端口和黑板

1、构造函数 之前使用的行为树创建节点时,默认的构造函数形如: CalculateGoal(const std::string& name, const NodeConfig& config):SyncActionNode(name,config) {

架构思维:缓存层场景实战_读缓存(下)

文章目录 Pre业务场景缓存存储数据的时机与常见问题解决方案1. 缓存读取与存储逻辑2. 高并发下的缓存问题及解决方案3. 缓存预热&#xff08;减少冷启动问题&#xff09; 缓存更新策略&#xff08;双写问题&#xff09;1. 先更新缓存&#xff0c;再更新数据库&#xff08;不推荐…

Odrive源码分析(七) 逆park变换

Odrive源码分析(七) Park逆变换 Odrive中FOC部分代码分散在各个对象中&#xff0c;并不是集中在某一块&#xff0c;所以试图在某一段代码就能得到FOC全貌是不现实的。 先看下FOC的整个流程&#xff1a; 控制变量到三相电流输出的关键部分分为Park逆变换和SVPWM。本文主要讨论…

Flink Hive Catalog最佳实践

Flink Hive Catalog 最佳实践 一、配置与初始化 依赖管理 Hive Connector 版本对齐&#xff1a;需确保 flink-sql-connector-hive 版本与 Hive 版本严格匹配&#xff08;如 Hive 3.1.3 对应 flink-sql-connector-hive-3.1.3_2.12&#xff09;&#xff0c;同时添加 Hadoop 遮蔽…

通过人类和机器人演示进行联合逆向和正向动力学的机器人训练

25年3月来自哥伦比亚大学的论文“Train Robots in a JIF: Joint Inverse and Forward Dynamics with Human and Robot Demonstrations”。 在大型机器人演示数据集上进行预训练是学习各种操作技能的强大技术&#xff0c;但通常受到收集以机器人为中心数据的高成本和复杂性限制…

金融简单介绍及金融诈骗防范

在当今社会&#xff0c;金融学如同一股无形却强大的力量&#xff0c;深刻影响着我们生活的方方面面。无论是个人的日常收支、投资理财&#xff0c;还是国家的宏观经济调控&#xff0c;都与金融学紧密相连。​ 一、金融学的概念​ 金融学&#xff0c;简单来说&#xff0c;是研…

JavaScript `new Date()` 方法移动端 `兼容 ios`,ios环境new Date()返回NaN

在 iOS 环境下&#xff0c;new Date() 方法会返回 NaN&#xff0c;这通常是由于时间字符串的格式问题。iOS 的 Date 构造函数对时间字符串的格式要求比其他平台更严格。 原因&#xff1a;ios端不兼容“-”为连接符的时间。 解决办法&#xff1a; 替换时间格式 IOS 不支持某…

【网络编程】网络编程基础和Socket套接字

目录 一. 网络编程的概念 二. 网络编程基础知识 1&#xff09;网卡 2&#xff09;接收端和发送端 3&#xff09;客户端和服务器 4&#xff09;请求和响应 5&#xff09;客户端和服务器的交互模式 三. Socket 套接字模型 一. 网络编程的概念 网络编程 是通过编程实现不同…

盛水最多的容器问题详解:双指针法与暴力法的对比与实现

文章目录 问题描述方法探讨方法一&#xff1a;暴力法&#xff08;Brute Force&#xff09;思路代码实现复杂度分析 方法二&#xff1a;双指针法&#xff08;Two Pointers&#xff09;思路正确性证明代码实现复杂度分析 方法对比总结 摘要 盛水最多的容器&#xff08;Container …

图论-BFS搜索图/树-最短路径问题的解决

续上篇~图论--DFS搜索图/树-CSDN博客 先看第一次学习的博客&#xff01;&#xff01;&#x1f447;&#x1f447;&#x1f447;&#x1f447; &#x1f449; 有一些问题是广搜 和 深搜都可以解决的&#xff0c;例如岛屿问题&#xff0c;这里我们记dfs的写法就好啦&#xff0c;…

C++进阶——C++11_智能指针

目录 1、问题引入 2、RAII和智能指针 3、C标准库的智能指针 3.1 auto_ptr (不好) 3.2 unique_ptr 3.3 shared_ptr (重点) 3.4 weak_ptr (重点) 4、shared_ptr的循环引用问题(重点) 5、shared_ptr的线程安全问题 6、C11智能指针和boost的关系 7、内存泄漏 7.1 什么是…

数据库的基本原则

数据库的核心原则 原子性与持久性&#xff1a;原子性&#xff08;Atomicity&#xff09;确保一个事务中的所有操作要么全部完成&#xff0c;要么完全不执行&#xff0c;不会出现部分完成的情况。持久性&#xff08;Durability&#xff09;则保证一旦事务提交成功&#xff0c;即…

Java设计模式实战:装饰模式在星巴克咖啡系统中的应用

一、装饰模式简介 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种模式创建了一个装饰类&#xff0c;用来包装原有的类&#xff0c;并在保持类方法签名完整性的前…

使用MPI-IO并行读写HDF5文件

使用MPI-IO并行读写HDF5文件 HDF5支持通过MPI-IO进行并行读写&#xff0c;这对于大规模科学计算应用非常重要。下面我将提供C和Fortran的示例程序&#xff0c;展示如何使用MPI-IO并行读写HDF5文件。 准备工作 在使用MPI-IO的HDF5之前&#xff0c;需要确保: HDF5库编译时启用…

七、自动化概念篇

自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c;在设计了测试用例并通过评审之后&#xff0c;由测试人员根据测试用例中描述的过程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。在此过程中&#xff0c;为了节省人…