新之助
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
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 客服小蜜蜂(微信:freebee1024)
