gpt4 book ai didi

javascript - 有没有办法从 css 文件中执行 javascript?

转载 作者:可可西里 更新时间:2023-11-01 12:57:12 25 4
gpt4 key购买 nike

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

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

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

body {
behavior:url(/user/uploadedfiles/evil-uploaded-component.htc);
}

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

最佳答案

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

带 IE 的 HTC

像这样使用 CSS 规则:

body {
behavior:url(script.htc);
}

在那个 script.htc 文件中有类似的东西:

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

HTC 文件在 ondocumentready 事件上执行 main() 函数(指的是 HTC 文档就绪。)

XBL 与 Firefox

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

像这样使用 CSS 规则:

body {
-moz-binding: url(script.xml#mycode);
}

在你的 script.xml 中:

<?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>

constructor 标签中的所有代码都将被执行(将代码包装在 CDATA 部分中是个好主意。)

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

关于javascript - 有没有办法从 css 文件中执行 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48183134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com