XSS漏洞
文章目录
XSS漏洞概述
- XSS漏洞中文名称为"跨站脚本攻击"或"XSS注入漏洞"。常年位居Web top10漏洞之列。是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
Cookie与Session
-
Cookie与Session的参考文章: Cookie和Session的区别(面试必备)_秋风不识路的博客-CSDN博客_cookie和session的区别
-
想要明白XSS漏洞攻击的原理,首先需要知道Cookie与Session他们的作用是做什么的。cookie和session都是用来跟踪浏览器用户身份的会话方式。cookie数据保存在客户端(浏览器),session数据保存在服务端。服务器端通过Cookie中携带的数据,去查询Session对象,区分不同的用户。
XSS漏洞原理
- 形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致 “精心构造” 的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。简而言之就是, 由于用户不可控输入(前端输入的数据被后端接受后没有进行严格的安全性处理就直接使用) ,攻击者可任意的输入前端代码,当前代码拼接成静态网页,然后在被攻击者的电脑上执行后,可导致数据的丢失(盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害)。
XSS漏洞危害
- 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号----盗取被攻击者的cookie值,进行身份冒充
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
- 盗窃企业重要的具有商业价值的资料
- 非法转账
- 强制发送电子邮件
- 网站挂马
- 控制受害者机器向其它网站发起攻击
- 钓鱼网站
- 流量劫持
- 增大流量
- 正常操作----引流----送钱、打广告
- 非常规----利用XSS漏洞自动请求流量较小的网站或在其他网站上添加二维码------违法的
- 配合CSRF攻击----ajax、window.location
- 传播跨站脚本蠕虫
XSS漏洞分类
参考文章:xss漏洞学习小结 - FreeBuf网络安全行业门户
-
XSS一般传统的分类:
- 反射型
- 存储型
- DOM型
-
根据跨站的成因或者特征进行分类:
- 有Flash跨站
- mXSS跨站
- UBB跨站
- 宽字节跨站
-
国外将跨站分类为:
- 服务端跨站(Server XSS)
- 客户端跨站(Client SS )
反射型XSS:<非持久型>
-
这种攻击方式往往具有一次性,代码存在于URL中,只在用户单击时触发。攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
反射型漏洞攻击流程
- 攻击者寻找具有漏洞的网站
- 攻击者给用户发了一个带有恶意字符串的链接
- 用户点击了该链接
- 服务器返回HTML文档,此时该文档已经包含了那个恶意字符串
- 客户端执行了植入的恶意脚本,XSS攻击就发生

存储型XSS:<持久型>
-
比反射型XSS更具有威胁性,攻击脚本将被永久的存放在目标服务器的数据库或文件中。这是利用起来最方便的跨站类型,跨站代码存储于服务端(比如数据库中)
-
如在个人信息或发表文章等地方加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie。
-
攻击者在发帖或留言的过程中,将恶意脚本连同正常信息一起注入到发布内容中。随着发布内容被服务器存储下来,恶意脚本也将永久的存放到服务器的后端存储器中。当其他用户浏览这个被注入了 恶意脚本的帖子时,恶意脚本就会在用户的浏览器中得到执行。
存储型XSS攻击流程
- 用户提交了一条包含XSS代码的留言到数据库
- 当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来
- 浏览器发现有XSS代码,就当做正常的HTML和JS解析执行

DOM型XSS:<非持久型>
-
基于文档对象模型(Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端(数据会经过服务器端,不会到达数据库,输入一次攻击代码只攻击一次,输入的恶意代码不会经过服务器,在前端被js代码直接读取放置到前端的标签中,是一 种特殊的反射型XSS),而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS
DOM漏洞攻击流程
- 攻击者寻找具有漏洞的网站
- 攻击者给用户发了一个带有恶意字符串的链接
- 用户点击了该链接
- 服务器返回HTML文档,但是该文档此时不包含那个恶意字符串
- 客户端执行了该HTML文档里的脚本,然后把恶意脚本植入了页面
- 客服端执行了植入的恶意脚本,XSS攻击就发生了
XSS漏洞防御
在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
XSS漏洞检测工具
kali里面有集成一些比较知名的检测工具,例如XSSER等。这种检测一般是上线前需 要进行安全评审的规范环节之一。
XSS漏洞利用方式
参考文章:XSS漏洞利用方式汇总_風月长情的博客-CSDN博客_xss漏洞利用
这篇文章写的很详细,漏洞利用方式可以参考这篇文章。