我的博客:acsec.xyz
微信公众号: Ac sec
一.概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
二.反射型xss(get)
1.从文本框输入发现限制了字符长度,更改长度
2.payload
<script>alert('xss')</script>
3.成功弹窗
三.反射型(post)
登录后插入步骤二中代码成功弹窗
四.存储型xss
留言板插入步骤二中代码成功弹窗
五.DOM型xss
1.在文本框输入代码后,查看前端代码发现该语句变成了a链接
2.直接使用onmouseover事件构造闭合
'οnmοuseοver=alert('xss')>
六.DOM型xss-x
1.同样代码被放在了a标签内
2.直接使用onclick事件构造闭合
onclick=alert('xss')>
七.XSS之盲打
1.插入代码
2.登录后台查看,这个属于存储型xss
八.XSS之过滤
1.大小混写绕过
<ScriPt>alert('xss')</sCRipt>
九.xss之htmlspecialchars
1.> ’ 等符号被过滤,并且输入内容存在于a链接内
2.使用 / 绕过,并且使用onclick事件闭合语句
'οnclick='alert(/xss/)'
3.成功弹窗
十.xss之href输出
1.输出出现在a标签的href属性里面
2.使用js协议
javascript:alert('xss')
十一.xss之js输出
1.输入内容赋值给了变量
2.闭合script标签
'</script><script>alert('xss')</script>