首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有办法从css文件中执行javascript吗?

有办法从css文件中执行javascript吗?
EN

Stack Overflow用户
提问于 2018-01-10 08:27:35
回答 1查看 3.3K关注 0票数 4

我只能访问一个我可以修改的css文件。我有很多修改要做,我想知道是否有办法从CSS文件中执行javascript代码。

我确实发现了一个在最新浏览器中不支持的旧漏洞。http://dougrathbone.com/blog/2013/10/30/executing-javascript-inside-css-another-reason-to-whitelist-and-encode-user-input

如您所见,该漏洞是通过从另一个url调用任意代码来利用的,如下所示

代码语言:javascript
复制
body {
    behavior:url(/user/uploadedfiles/evil-uploaded-component.htc);
    }

现在,我想知道是否有其他方法可以做到?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-30 18:25:22

IE和Firefox都包含从CSS执行JavaScript的方法。正如Paolo所提到的,IE中的一种方式是表达式技术,但也有更为模糊的HTC行为,其中包含脚本的单独XML是通过CSS加载的。使用XBL的Firefox也有类似的技术。这些技术并不直接从CSS执行JavaScript,但是效果是一样的。

HTC与IE

使用如下CSS规则:

代码语言:javascript
复制
body {
  behavior:url(script.htc);
}

在该script.htc文件中有如下内容:

代码语言:javascript
复制
<PUBLIC:COMPONENT TAGNAME="xss">
   <PUBLIC:ATTACH EVENT="ondocumentready" ONEVENT="main()" LITERALCONTENT="false"/>
</PUBLIC:COMPONENT>
<SCRIPT>
   function main() 
   {
     alert("HTC script executed.");
   }
</SCRIPT>

HTC文件在事件main()上执行ondocumentready函数(引用HTC文档的就绪状态)。

带有火狐的XBL

Firefox使用XBL支持类似的XML脚本执行攻击。

使用如下CSS规则:

代码语言:javascript
复制
body {
  -moz-binding: url(script.xml#mycode);
}

在你的script.xml中:

代码语言:javascript
复制
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl" xmlns:html="http://www.w3.org/1999/xhtml">

<binding id="mycode">
  <implementation>
    <constructor>
      alert("XBL script executed.");
    </constructor>
  </implementation>
</binding>

</bindings>

构造函数标记中的所有代码都将被执行(将代码包装在CDATA部分是个好主意)。

在这两种技术中,除非CSS选择器匹配文档中的一个元素,否则代码不会执行。通过使用类似于body的内容,它将在页面加载时立即执行。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48183134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档