XSS 漏洞验证的方式
2016-04-20 16:16
211 查看
摘要: 主要总结一般XSS漏洞的验证方式,但对于DOM型的XSS漏洞接触得比较少,自己这方面的东西少得可怜,后面再进行了解和总结。
一般XSS漏洞验证的总结,但对于DOM型的XSS漏洞接触得比较少,自己这方面的东西少得可怜,不太了解,后面还需要总结的。
几种情况验证方式:
1. 参数值放在标签属性值中:
(1) 事件属性:可直接输入脚本验证;
(2) style属性:通过expression引入脚本(根据是否对分号、冒号及固定结构进行过滤构造不同的结构);
(3) 一般属性:通过引号把原属性值进行截断,构造出事件属性或style属性(如果是隐藏域的话一般构造style属性)。
2. 参数值放在普通标签(非script标签)中:
(1) 通过尖括号引入新的标签(两类:允许script、不允许script);
3. 参数值放在script标签中:
(1) 对尖括号进行过滤:根据参数所在位置上下文结构构造数据:
a. 未对引号、分号、逗号和冒号进行过滤:任意构造;
b. 引号未进行过滤,分号、逗号和冒号部分过滤:根据上下文进行构造(一般先闭合原有引号)
c. 引号进行过滤,参数放在引号中:无解;
(2) 对尖括号不进行过滤:闭合原有script标签,引入新的script标签。
验证过滤不完全情况:
1. 黑名单过滤验证:
(1) 对expression过滤:插入混淆字符绕过:在css中,/**/是注释字符,除了/**/外,字符”\”和结束符”\0″也是被忽略的,可以用来混淆字符(这个直接引用别人的,但验证过了,OK了);
(2) 对于长度的限制:可通过分批加入,但要在同一页面(如:<script>var z = z + "alert"</script>)。
2. 特殊字符过滤注意:
(1) 对单引号进行过滤:
a. 注入脚本实例:
<div onmouseover="a='al'+'ert(2)';e=eval;e(a);">mouse here!
b. 修复1:对单引号进行过滤或转义
c. 绕过实例:
<div onmouseover="a='al'+'ert(2)';e=eval;e(a);">mouse here!
d. 绕过原理:ASCII编码在属性值中会转为相应字符(即:' ->')。
(2) 通过事件传递的转义字符串发生二次转义:
a. 注入脚本实例:
<div onmouseover="test('<ScriPt>alert(007)</ScrIpt>')">
b. test函数接收到的字符经转义变为:<script>alert(007)</script>
一般XSS漏洞验证的总结,但对于DOM型的XSS漏洞接触得比较少,自己这方面的东西少得可怜,不太了解,后面还需要总结的。
几种情况验证方式:
1. 参数值放在标签属性值中:
(1) 事件属性:可直接输入脚本验证;
(2) style属性:通过expression引入脚本(根据是否对分号、冒号及固定结构进行过滤构造不同的结构);
(3) 一般属性:通过引号把原属性值进行截断,构造出事件属性或style属性(如果是隐藏域的话一般构造style属性)。
2. 参数值放在普通标签(非script标签)中:
(1) 通过尖括号引入新的标签(两类:允许script、不允许script);
3. 参数值放在script标签中:
(1) 对尖括号进行过滤:根据参数所在位置上下文结构构造数据:
a. 未对引号、分号、逗号和冒号进行过滤:任意构造;
b. 引号未进行过滤,分号、逗号和冒号部分过滤:根据上下文进行构造(一般先闭合原有引号)
c. 引号进行过滤,参数放在引号中:无解;
(2) 对尖括号不进行过滤:闭合原有script标签,引入新的script标签。
验证过滤不完全情况:
1. 黑名单过滤验证:
(1) 对expression过滤:插入混淆字符绕过:在css中,/**/是注释字符,除了/**/外,字符”\”和结束符”\0″也是被忽略的,可以用来混淆字符(这个直接引用别人的,但验证过了,OK了);
(2) 对于长度的限制:可通过分批加入,但要在同一页面(如:<script>var z = z + "alert"</script>)。
2. 特殊字符过滤注意:
(1) 对单引号进行过滤:
a. 注入脚本实例:
<div onmouseover="a='al'+'ert(2)';e=eval;e(a);">mouse here!
b. 修复1:对单引号进行过滤或转义
c. 绕过实例:
<div onmouseover="a='al'+'ert(2)';e=eval;e(a);">mouse here!
d. 绕过原理:ASCII编码在属性值中会转为相应字符(即:' ->')。
(2) 通过事件传递的转义字符串发生二次转义:
a. 注入脚本实例:
<div onmouseover="test('<ScriPt>alert(007)</ScrIpt>')">
b. test函数接收到的字符经转义变为:<script>alert(007)</script>
相关文章推荐
- BBSXP漏洞再探究
- Dedecms getip()的漏洞利用代码
- 漏洞漫舞的飞骋
- Search Engine XSS Worm
- OBlog任意文件下载漏洞
- IIS漏洞整理大全
- JSP脚本漏洞面面观
- 新思路现动网新漏洞
- 小议yxbbs漏洞利用代码
- 揭露88red生成htm静态页面企业建站系统漏洞第1/2页
- 四大漏洞入侵博客
- Debian灾难性漏洞
- 使用Nmap为你的Windows网络找漏洞的图文分析
- rgboard 3.0.12 远程文件包含漏洞
- ASP的chr(0)文件上传漏洞原理和解决方法介绍
- 验证码的三个常见漏洞和修复方法
- php漏洞之跨网站请求伪造与防止伪造方法
- php str_replace的替换漏洞
- FCKeditor 新闻组件的一些程序漏洞
- PHP程序漏洞产生的原因分析与防范方法说明