三、XSS 漏洞
XSS全称为跨站脚本(Cross Site Scripting) ,为了不和层叠样式表(Cascading Style Sheets)的缩写CSS混合,所以改名为XSS;攻击者会向web页面插入恶意 js 代码, 使得当其他用户访问该网页时,这些恶意代码得以执行。XSS漏洞的主要目的是窃取用户的敏感信息(如会话 cookies)或执行不良操作(如篡改页面内容、传播病毒等)。
1.漏洞原理
HTML 通过将一些字符特殊对待来区别文本和标记,如小于符号(<)被看作是 HTML 标签的开始。当动态页面中插入的内容含有这些特殊字符时,用户浏览器会将其误认为是插入了 HTML 标签。如果这些 HTML 标签引入了一段 JavaScript 脚本,且动态页面未能对这些特殊字符进行正确检查或出现失误,这些脚本程序就会在用户浏览器中执行,从而产生 XSS 漏洞。
- 注入恶意脚本:攻击者通过在用户输入的地方(如评论区、表单输入框等)插入恶意脚本,这些脚本通常是JavaScript代码。
- 执行恶意脚本:当其他用户访问包含恶意代码的网页时,浏览器会执行这些代码。
- 窃取信息或攻击用户:恶意脚本可以执行各种操作,如窃取用户的cookies、伪造请求、修改网页内容,甚至在用户不知情的情况下执行其他恶意行为。
2.XSS 分类
(1)反射型XSS:
攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
- 恶意代码通过URL、表单提交等方式反射到网页中,一般是即时性的攻击。
- 这种攻击不会存储在服务器上,而是每次用户访问时都需要触发。当用户点击包含恶意代码的链接时,恶意脚本被执行。
反射型XSS的特点
- 无持久性:
-
- 反射型XSS与存储型XSS不同,它没有将恶意脚本存储在服务器中。攻击仅在受害者点击恶意链接时生效。也就是说,攻击是即时发生的,不会在其他用户的访问中反复触发。
- 依赖于用户交互:
-
- 反射型XSS通常依赖于用户的交互,特别是点击恶意链接。攻击者通过诱导用户点击特定的链接来实现攻击。由于没有持久存储,攻击者无法控制受害者的浏览器长期暴露于该攻击。
- 影响范围较小:
-
- 由于反射型XSS的攻击通常是在特定时间、特定用户点击特定链接时触发的,因此攻击的影响范围相对较小。攻击只有在链接被点击的瞬间才生效。
(2)存储型XSS:
攻击者通过将恶意脚本代码永久存储在目标网站的服务器上,直到有用户访问包含这些恶意脚本的页面时,这些脚本才会在浏览器中执行。与反射型XSS不同,存储型XSS的恶意代码会长期存在,并对多个用户产生威胁。因为恶意代码存储在服务器端,只要没有被清除,任何访问相关页面的用户都会受到影响。
- 恶意代码会被存储在目标服务器的数据库中(如用户评论、留言板、文章等),当其他用户访问包含该恶意内容的页面时,脚本被执行。
- 这种类型的攻击较为危险,因为恶意代码会长期存在,多个用户可能会受到影响。
存储型XSS的特点
- 持久性:
-
- 存储型XSS与反射型XSS不同,恶意脚本被存储在服务器上,直到被清除。因此,任何访问包含恶意代码的页面的用户都会受到攻击。攻击具有持久性,直到服务器端管理员修复漏洞或清除恶意内容。
- 影响范围广:
-
- 由于存储型XSS会影响到所有访问该页面的用户,攻击的影响范围较大。只要恶意代码存在,所有访问该页面的用户都会被攻击。
- 隐蔽性:
-
- 存储型XSS在攻击初期并不容易被发现,攻击者的恶意脚本可能在后台悄无声息地存储并等待执行,直到有用户访问相关页面时才会触发。
(3)DOM XSS:
DOM( 基于文档对象模型的跨站脚本攻击 ) 是一种通过操作网页中的DOM(文档对象模型)来实现的XSS攻击。与反射型和存储型XSS不同,DOM型XSS的恶意脚本不会直接通过服务器返回响应,而是通过客户端的JavaScript脚本在浏览器端执行。它是基于对网页结构和内容的动态修改,攻击者通过篡改客户端JavaScript中的DOM元素来实施攻击。
- 这种类型的XSS漏洞发生在客户端,恶意代码是通过操作网页的DOM(文档对象模型)来触发的。攻击者通过特定的JavaScript代码修改页面的行为,使得页面上的元素执行不安全的操作。
DOM型XSS的特点
- 纯客户端攻击:
-
- DOM型XSS不同于存储型和反射型XSS,它完全依赖于浏览器端的JavaScript处理和DOM操作。攻击者通过在客户端脚本中插入恶意代码来操控DOM,而不是通过服务器端的响应。
- 攻击触发时机灵活:
-
- DOM型XSS的攻击通常不依赖于用户访问特定的页面,而是依赖于特定的客户端交互。它可以通过用户的任何输入或操作触发,只要这些输入被不安全地插入到DOM中。
- 浏览器执行:
-
- 攻击发生在用户的浏览器中,且通常是在用户加载页面或进行某些交互后执行。例如,用户点击链接、提交表单或与页面上的元素进行交互时,恶意代码才会被执行。
- 影响范围:
-
- 由于攻击依赖于浏览器端的执行,DOM型XSS的影响范围通常限于特定的用户和页面。如果某个用户访问了含有恶意链接的页面或执行了某些操作,攻击就会对该用户生效。
3.XSS漏洞的危害
1.窃取用户敏感信息
2.劫持用户会话
3. 篡改网站内容
4. 伪造的用户操作
5.网站重定向
4.XSS 防御
- 对所有输入进行严格的验证与过滤。
- 对输出进行HTML编码,确保不执行用户提交的恶意脚本。
- 配置CSP策略,限制脚本的执行来源。
- 使用现代安全框架来自动处理安全问题。
- 定期进行安全审计,及时发现和修复漏洞。

7661

被折叠的 条评论
为什么被折叠?



