假设攻击场景如下
xss漏洞输出位置如下:
<div>用户输出可控位置</div>
攻击者准备利用on事件来执行js,比如
<div><svg onload="alert('xss');"></div> 利用onload属性
验证在这个场景下厂商的安全防护策略
分析思路:
a=<xxx/onmouseover="xxx.xxx=aaaa"> 不拦截
a=<img/onmouseover="xxx.xxx=aaaa"> 拦截
说明区分了认识的标签和不认识的标签
'a=<div/oxx="xxx.xxx=aaaa">' 不拦截
'a=<div/onxx="xxx.xxx=aaaa">' 拦截
拦截on事件,只要以on开头就拦截
a=<xxx/onmouseover="xxx.xxx=aaaa('';"> on属性值中少一个右括号就不拦截,说明判断js语法是否正确
a=<xxx/onmouseover="xxx.xxx=aaaa('');"> 拦截
a=<xxx/onmouseover="xxx.xxx=aaaa;"> 不拦截
未知标签 && on事件 && 解析on属性中js && on属性中调用了函数 则拦截
a=<xxx/onxxx=a();> 不拦截
a=<xxx/onxxx=xxxxx;a();> 拦截
on属性值需要大于一定长度
a=<img/onxxxx="aaa"> 不拦截
a=<img/onxxxx="aaaaaaa"> 拦截
已知标签on属性值大于一定长度则拦截
存在HTML解析和JS解析
安全防护策略可能是: