XSS(Cross Site Scripting)
跨站脚本,诞生于1996年,为了防止和CSS混淆固取名XSS
攻击者向WEB页面插入前端代码(HTML、CSS、JS等),让代码可以被浏览器执行,访问该页面的用户就会被攻击一般是插入恶意JS代码
一、基本介绍
本质: 由于过度信任用户的输入,导致对输入内容校验不严格,将用户输入的数据当作有效前端代码来执行
危害:
- 会话劫持,盗取Cookie,伪装用户登陆
- 窃取用户信息,强制弹出广告页面,页面篡改
- 传播跨站蠕虫,网页挂马、提权
分类:
- 按大类分: 可分为持久型和非持久型(又称为反射型)
- 按形式分: 反射型、存储型、DOM型
漏洞点:
- 数据交互的地方,输入框,URL参数,Cookie、POST表单、HTTP头、
- 翻页功能处、留言板、评论栏、UR 哈希串中
测试流程:
- 1.在目标站点上寻找,数据交互的地方,如:搜索框、留言板、URL参数、页码等地方
- 2.输入一些,特殊字符,提交后,查看源码,是否对你的输入做了处理(特殊字符过滤或转义)
- 3.通过搜索你的输入,查看到输出点处,是否可以对其进行标签或元素的闭合
- 4.构造测试代码(payload),看是否可以成功执行,执行成功则存在XSS漏洞
- 附: 如果在输入payload时有长度限制可以直接在查看当前输入点的源码处,修改标签属性绕过限制
二、详细剖析
反射型跨站脚本(Reflected Cross-site Scripting):
也称作非持久型、参数型跨站脚本、一次性
攻击流程: 前端输入→后端解析→前端输出
原理:
将用户输入的数据通过URL的形式直接或未经过完善的安全过滤就在浏览器中进行输出
导致输出的数据中存在可被浏览器执行的前端代码;因为只执行一次,且只有用户访问
带有该漏洞的URL时才会触发攻击,所以一般被攻击者用来做钓鱼使用,诱骗受害者访
问该页面,从而完成攻击
存储型跨站脚本(Stored Cross-site Scripting):
持久型、比反射型危害更大
攻击流程: 前端输入→经过后端→存入数据库→前端调用数据→前端输出
原理:
将用户输入的数据通过后端存入网站数据库中,当网页被浏览时,网页进行
数据查询展示时,会从数据库中获取数据内容并将数据内容在网页中输出展
示,只要用户浏览了包含此恶意代码的页面就会触发攻击,此类XSS不需要
用户访问特定的URL就能执行,攻击者事先将恶意恶意代码提交存储到服务器中
DOM型跨站脚本(DOM Cross-site Scripting):
类似反射型XSS,只不过反射型是由后端解析输出到前端而DOM型是直接由前端的JS解析后输出,一次性
攻击流程: 前端输入→前端JS解析输出
原理:
类似于反射型,只不过反射型的攻击代码在URL的参数当中,
而DOM型攻击代码在URL的哈希串中(URL中#号后面的部分)
攻击者构造好带有恶意代码的URL链接,诱使用户访问带有恶意代码的URL
用户通过浏览器打开时,JS解析URL中的恶意代码并执行
来源:freebuf.com 2021-07-29 00:21:51 by: NewC0mer
请登录后发表评论
注册