首页 > 其他分享 >XSS 基本概念和原理介绍

XSS 基本概念和原理介绍

时间:2024-08-20 17:27:42浏览次数:8  
标签:XSS 存储 DOM 用户 恶意 服务器 原理 基本概念

XSS 基本概念和原理介绍

基本概念

跨站脚本攻击 XSS(Cross Site Scripting),为了不和层叠样式表 ( Cascading Style Sheets,CSS ) 的缩写混淆,故将跨站脚本攻击缩写为 XSS。

恶意攻击者 往 Web 页面里插入恶意 JavaScript 代码,当用户浏览该页面时,嵌入在 Web 里面的 JS 代码会被解析执行,从而达到恶意攻击用户的目的。

在一个 Web 页面上,有一种很常见的功能是将用户输入的内容输出到页面上。

如果这里输入的内容是一段经过构造的 JS 代码,提交之后再次访问这个页面时,用户就会获取该 JS 代码在浏览器端执行的结果。

image.png

通过构造其他相应的代码,攻击者可以执行更具危害的操作。

实施 XSS 攻击需要具备两个条件:

  1. 能够向 Web 页面注入恶意代码;
  2. 这些恶意代码能够被浏览器成功执行。

XSS 分类

XSS 攻击方法主要分为 3 类,分别是 反射型 XSS,**存储型 XSS **和基于的 DOM 的 XSS。

反射型

特点:恶意脚本通过 URL 传递并在页面上立即执行。
攻击方式:攻击者诱导用户点击一个包含恶意代码的链接,恶意代码被浏览器执行。
示例:当用户点击一个包含恶意脚本的链接时,服务器将恶意脚本反射回用户的浏览器并立即执行。

非持久型常见的就是在 URL 中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个 GET 请求来提交带有恶意代码的链接。造成反射型 XSS 主要是 GET 类型。

image.png

反射型 XSS 完整的攻击流程:

A 和 B 表示的是用户和网站正常通信,从 C 开始就是 XSS 攻击的整个流程。
首先:

  • C:黑客向用户发送了一个有恶意脚本的 URL。
  • D:用户点击之后且登录了 Website 。
  • E:服务器返回了恶意脚本的响应。
  • F:恶意脚本在浏览器执行之后,向黑客已经部署的服务器上发送敏感信息。
  • G:黑客前往黑客服务器获取到用户的敏感信息。
  • H:黑客获取到了用户的敏感信息。
  • I:黑客利用已经获取的敏感信息向 Website 发起请求,伪装成用户进行非法操作。

以上就是 反射型XSS 的整体攻击环节。

存储型

特点:恶意脚本存储在目标服务器的数据库中,并在用户访问相关页面时执行。
攻击方式:攻击者将恶意代码输入到网站的某个输入表单中,代码被存储在服务器上,其他用户访问该页面时恶意代码被执行。
示例:攻击者在论坛或评论区发布含有恶意脚本的帖子,其他用户查看该帖子时恶意脚本被执行。

持久型常见的就是在 博客留言板、反馈投诉、论坛评论,可以将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。 例如: <srcipt>alert(/xss/)</srcipt>

image.png

存储型 XSS 攻击原理
黑客事先在 Website 的 Server 中存储一端恶意脚本,之后用户点击访问获取数据,浏览器在解析文件的时候执行了恶意的脚本,向黑客发送敏感数据。

存储型 XSS 完整的攻击流程:

C 表示的是正常访问 Website 的情况。
首先:

  • A : 黑客发现了浏览器有 XSS 存储型的漏洞,于是向浏览器发起恶意代码。
  • B:服务器将这一段恶意代码存储到了服务器中。
  • C:用户发现这个 website 有个地方吸引了他,但是黑客提前在这里埋了恶意代码。
  • D:用户读取了服务器那一段有恶意的代码。
  • E:浏览器执行了恶意脚本获取了用户的敏感信息
  • F:恶意的代码传送到了黑客的服务器里
  • G:黑客就可以从服务器中获取到用户的敏感信息,从而模拟用户登录这个 website 。

反射型 XSS 与 存储型 XSS 的区别:
一、被攻击对象的不同

反射型 XSS 的被攻击对象一般是攻击者去寻找的,就比如说:一个攻击者想盗取 A 的 QQ 号,那么攻击者就可以将一个含有反射型 XSS 的 URL 链接给 A,此时我们可以看出,需要将特定的 URL,注意是特定的 URL 给 A,当 A 点击进入链接时,就受到 XSS 攻击,所以这种攻击范围不是特别的广。

而存储型 XSS 是广撒网的方式或者指定的方式,就是攻击者将存储型 XSS 放在一些有 XSS 漏洞的网站上,只要有用户访问这个链接就会中招,而攻击者也可以寻找被攻击对象,比如说上面的例子,所以我们可以看出,存储型 XSS 的危害性更大,范围更广,可以不需要寻找被攻击对象,只要存储型 XSS 在服务器上就能实施攻击。

DOM 型 XSS 的被攻击对象其实和反射型 XSS 被攻击对象差不多,就是给攻击对象放送 URL。

二、解析位置不同(个人感觉是反射型与存储型区别的本质)

反射型XSS的脚本被解析的地方是浏览器,而存储型XSS的脚本被解析的地方是服务器,DOM型XSS也是浏览器,所以DOM型又叫DOM反射型XSS。但是反射型XSS需要联网,而DOM型不需要!

三、存储时间不同
反射型XSS是既有即用,没有持久性,而存储型 XSS 是存储在服务器上,只要服务器不挂机或者是被干掉,就一直会有,DOM 型 XSS 和反射型差不多,但是用人就扯淡了,那反射型只要不改变源代码不就是一直存在吗?不是的,反射型XSS是必须得特定的URL才能使得被攻击对象中招,如果是单单官方网页,就没有了咯,存储型就不同,只要服务器里面有存储型XSS,不论是不是官网,被攻击对象都会被攻击。

四、允许输入点的不同(这是DOM型与其他两种的区别)
一般情况下,反射型XSS在搜索框啊,或者是页面跳转啊这些地方,而存储型XSS一般是留言,或者用户存储的地方,而DOM呢?是在DOM位置上,不取决于输入环境上。

DOM 型

特点:恶意脚本通过修改浏览器的 DOM(文档对象模型)结构执行。
攻击方式:攻击者操纵页面中的 JavaScript,使其执行恶意代码,通常无需与服务器交互。
示例:通过恶意 URL 参数或输入值,攻击者修改页面的 JavaScript 代码,使其在用户的浏览器中执行恶意操作。

在讲解 DOM-XSS 之前,先以图来说明到底什么是 DOM:

image.png
文档对象模型 Document Object Model(DOM)是一个与平台、编程语言不相干的接口,允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果会成为展示页面的一部分。

DOM 型 XSS 其实是一种特殊类型的反射型 XSS,也被称作本地跨站,它是基于 DOM 文档对象模型的一种漏洞。DOM XSS 和反射型 XSS、存储型 XSS 的区别在于 DOM XSS 代码并不需要服务器参与,出发 XSS 靠的是浏览器的 DOM 解析,完全是客户端的事情。
DOM 中 有很多对象,其中一些对象可以被用户所操纵,如 url,location 等。客户端的脚本程序可以通过 DOM 来动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而是从客户端取得 DOM 中的数据后并在本地执行,因此仅从服务器端是没有办法防御 DOM 型 XSS 漏洞的,如若 DOM 中的数据没有经过严格的验证,便会产生基于 DOM 的 XSS 漏洞。
基于 DOM 的 XSS 是反射的特例,其中 JavaScript 隐藏在 URL 中,并在其呈现时由页面中的 JavaScript 取出,而不是在提供服务时嵌入到页面中。

总结:基于 DOM 的 XSS 的攻击场景和反射性 XSS 是一样的,唯一不同的就是,基于 DOM 的 XSS,不是发生在服务器端,而是直接发生在了浏览器那里。这可以使其比其他攻击更隐蔽,并且监控页面正文的 WAF 或其他防护检测不出恶意内容。

  • 反射型 XSS:通过 URL 传递并立即执行。
  • 存储型 XSS:存储在服务器端数据库中,用户访问时执行。
  • DOM XSS:通过修改客户端的 DOM 执行,不需要与服务器交互。

标签:XSS,存储,DOM,用户,恶意,服务器,原理,基本概念
From: https://www.cnblogs.com/wuhanjiayou/p/18369895/XSS

相关文章

  • 《深入探究 @SpringBootApplication 注解的内部原理》
    《深入探究@SpringBootApplication注解的内部原理》@SpringBootApplication注解涵盖了SpringBoot的包扫描原理、自动装配原理等众多重要原理。接下来,我们将对该注解展开深入且详尽的研究。而研究上述原理的关键,在于剖析@SpringBootApplication内部的构成结构,如下图:......
  • Mongo主从同步原理
    Mongo主从同步原理是基于复制集(replicateset).复制集是一组mongodb实例,其中一个实例为主节点,其他实例为从节点。主节点负责所有数据写操作,并将写操作的结果复制到从节点。从节点只能读取数据,不能写入数据在mongo中,主节点和从节点之间的数据同步是通过oplog(操作日志)实现的。Oplog......
  • 打气泵方案PCBA组成和运行原理
    打气泵是一种用来将气体(通常是空气)注入到物体中的装置。其运行原理可以分为以下几个步骤:压缩气体:打气泵通常通过电机或发动机驱动,将气体(一般是空气)抽入泵内。在泵内,气体被一个或多个叶片回转或活塞往复的运动压缩。建立压力:通过压缩,气体的体积减小,压力增加。当气体......
  • 多重示例详细说明Eureka原理实践
    Eureka原理(EurekaPrinciple)是指在长时间的思考和积累之后,通过偶然的瞬间获得灵感或发现解决问题的方法的一种认知现象。这个过程通常包括三个主要阶段:准备阶段、潜伏期以及突然的灵感爆发。下面详细说明Eureka原理的实践步骤:1.准备阶段广泛阅读与研究:在这个阶段,研究者需......
  • 国产GD32单片机开发入门(一) GD32F103C8T6开发板电路原理图分析
    文章目录一.概要二.技术名词解释三.板子主要电子器件四.原理图电路分析1.原理图总览2.电源电路1)5V电路2)3.3V电路3.LED指示灯电路4.复位电路5.晶振电路1)高频晶振电路2)低频晶振电路6.调试下载电路1)调试电路(SWD接线方式)2)BOOT电路7.外围接口电路8.模块拓展接口9......
  • 层次聚类算法原理及Python实现
    层次聚类算法(HierarchicalClusteringMethod)是一种基于簇间相似度在不同层次上分析数据,从而形成树形聚类结构的算法。它主要分为两种形式:凝聚层次聚类(自下而上)和分裂层次聚类(自上而下)。以下将详细介绍凝聚层次聚类的原理与步骤:一、原理凝聚层次聚类算法的基本思想是将每个样......
  • 谱聚类算法原理及Python实现
    谱聚类算法(SpectralClustering)是一种基于图论的聚类算法,其原理与步骤可以详细阐述如下:一、原理谱聚类算法建立在谱图理论基础上,它将聚类问题转化为图的最优划分问题。具体来说,算法将数据集中的每个对象看作是图的顶点V,将顶点间的相似度量化作为相应顶点连接边E的权值,从而得......
  • MOSFET的基本结构与工作原理
    MOS栅结构是MOSFET的重要组成部分,一个典型的N沟道增强型结构示意图如图1所示。其中栅极、源极和漏极位于同一个平面内,半导体的另一个平面可以称为体端,所以在一些书籍和资料中,也将MOSFET称为四端器件,实际上那个体端一般跟源极相连接,所以在此还是将MOSFET看成三端器件。N沟道增强......
  • TCPIP路由技术第一卷第八章OSPF第一部分-1 OSPF原理&RID&DR
    ospf开放最短路径优先协议ietf最新在rfc2328中说明ospf协议得其他一些特定使用了区域的概念完全无类别的处理地址问题支持使用多条路径的效率更高的等价负载均衡使用保留的组播地址支持更安全的路由选择认证使用可以跟踪外部路由的路由标记ospf的基本原理1.宣告ospf的路......
  • 【实战指南】使用 Redis 实现 Java 项目中的防重复提交功能:从原理到实战(实战篇)
    文章目录使用Redis实现Java项目中的防重复提交功能1.引言1.1为何需要防重复提交功能1.2重复提交导致的问题1.3引入Redis作为解决方案的一部分2.基础知识2.1Redis简介2.2Java环境搭建2.3环境配置3.理论基础3.1HTTP请求的特点3.2前端表单提交3.3后......