一直以来困惑于利用CSS去触发xss

网页中<script>标签、元素事件、CSS表达式、支持JavaScript的伪协议均可执行脚本。

仅IE中支持CSS expression,它允许用户在CSS中计算某个表达式。这个计算是通过JavaScript来实现的。直至CSS 2.1,开发者都无法在CSS里面进行算数运算,例如width:100px+3px获取不了103px的宽度。为了消除CSS的局限性,IE5-7提供了expresson函数(即CSS表达式)。expression会执行其中的函数,并以函数的返回值作为式子的值。

<p style="x:expression(alert(1))">

可以在HTTP头中添加X-UA-Compatible或者<META>标签中指定文档模式告诉浏览器应当模拟哪个版本的IE去渲染当前页面。

<meta http-equiv="x-ua-compatible" content="IE=7" >

1.png

yuange在2014年发布的VBS神洞(CVE-2014-6332),便是为了让IE11也能执行VBS,在利用代码的最开始加上了X-UA-Comatible标签让IE切换到IE8模式。

CSS expression XSS特点:

  1. CSS属性不区分大小写,ExPreSsion等价于expression
  2. CSS与JavaScript都支持注释符/**/,因此可以在expression表达式中插入任意注释符号,如x:expre/*abc*/ssion(ale/*abc*/rt(1))
  3. CSS支持HTML实体编码,如x:&#x65xpression(alert(1))
  4. CSS中可以使用JS16进制编码,特殊之处在于省略了x后面的x字符,似的写法形似JS8进制,如x:expression\28/**/alert(1)\29。Note:为了避免和后面的内容产生误解所以使用注释符/**/分隔开。在IE7上如果后面不是数字,那么会被忽略掉。

2.png

相关文章:

https://www.jb51.net/web/539341.html

《白帽子讲浏览器安全》


本文由 TEag1e 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gificon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.pngicon_rolleyes.gif2016gz.gif2016kun.gif2016zhem.gif2016am.gif2016kel.gificon_twisted.gif2016lh.gificon_neutral.gif2016ka.gif2016tx.gificon_evil.gif2016bb.gif2016yun.gif2016qq.gif2016baojin.gificon_confused.gif2016kk.gif2016zk.gif2016kb.gificon_mad.gif2016yhh.gificon_exclaim.gif2016xia.gif2016gg.gif2016qd.gificon_smile.gif2016lengh.gificon_biggrin.gif2016bz.gif2016wq.gificon_eek.gificon_arrow.gificon_wink.gif2016tuu.gif