您的位置:首页 > 其它

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息