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 οnmοuseοver="a='al'+'ert(2)';e=eval;e(a);">mouse here!

        b. 修复1:对单引号进行过滤或转义

        c. 绕过实例:

        <div οnmοuseοver="a=&#39;al&#39;+&#39;ert(2)&#39;;e=eval;e(a);">mouse here!

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

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

        a. 注入脚本实例:

        <div οnmοuseοver="test('&lt;ScriPt&gt;alert(007)&lt;/ScrIpt&gt;')">

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

转载于:https://my.oschina.net/u/656588/blog/147422

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值