XSS 漏洞验证的方式

    通常XSS漏洞验证的总结,但对于DOM型的XSS漏洞接触得比较少,本身这方面的东西少得可怜,不太了解,后面还须要总结的 css

几种状况验证方式: express

1. 参数值放在标签属性值中: 函数

    (1) 事件属性:可直接输入脚本验证; 编码

    (2) style属性:经过expression引入脚本(根据是否对分号、冒号及固定结构进行过滤构造不一样的结构); spa

    (3) 通常属性:经过引号把原属性值进行截断,构造出事件属性或style属性(若是是隐藏域的话通常构造style属性)。 orm

2. 参数值放在普通标签(非script标签)中: seo

(1) 经过尖括号引入新的标签(两类:容许script、不容许script); 事件

3. 参数值放在script标签中: ip

    (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=&#39;al&#39;+&#39;ert(2)&#39;;e=eval;e(a);">mouse here!

        d. 绕过原理:ASCII编码在属性值中会转为相应字符(即:&#39; ->')。

    (2) 经过事件传递的转义字符串发生二次转义:

        a. 注入脚本实例:

        <div onmouseover="test('&lt;ScriPt&gt;alert(007)&lt;/ScrIpt&gt;')">

        b. test函数接收到的字符经转义变为:<script>alert(007)</script>

相关文章
相关标签/搜索