1.漏洞原理
能向网页或浏览器注入可执行代码。验证是否有xss漏洞时,需要找有输入且页面有回显的地方。(满足可控变量且能以某种方式触发)
2.XSS分类
1.反射型
与数据库产生数据交互,但是不储存在数据库中,但只能是一次性的,发生于查询类的功能中,一般用于钓鱼攻击。
2.储存型
与数据库产生数据交互,并且储存于数据库中,出现在留言版等能够写入数据库并能触发的功能中,一般用于盗取Cookie未授权登录后台攻击。
3.DOM型
不与数据库产生交互,只存在于前端中,由前端代码解析,也是一次性。
3.函数防护绕过
1.http only:
- 将代码写入登录页面,形成储存型跨站
- 在登录页面构造触发地址让对方访问,触发跨站
2.实体化标签:
查看源码,构造闭合
3.<被转义:
'οnfοcus=javascript:alert(1)>// 具体使用'还是"根据源代码选择
4.onfocus被过滤:
通过构造连接触发xss "><a href=javascript:alert(1)>
5.大小写绕过
6.针对某个函数被替换为空,若为一次过滤,可双写
"><a hrehreff=javascript:alert(1)>
7.编码绕过,&#xxxxx<->文本编码
8.url验证:
末尾加上//http://
9.检测来源:
数据包中加上Referer:
10.隐藏输入:
查看源码有几个隐藏输入框(value=" ")->分别提交数据 ->看哪个参数有反应
4.WAF绕过
1.函数前加/ <a /href="url"#>a
2.fuzz (有cc流量防护,就在数据包加上爬虫协议)
3.更改提交方式
4.垃圾数据
5.加解密