在现代浏览器中是否可以通过样式属性进行 XSS?

信息安全 xss
2021-08-29 23:27:18

假设用户可以定义style属性的内容,但是以一种受限的方式。它们无法突破其价值,因为白名单解析器将删除以这种方式产生的任何不安全的属性/标签。

style他们可以仅使用现代浏览器中的属性值来执行 XSS吗?
“现代”是 IE10+ 和其他浏览器的最新版本。

2个回答

我到处搜索它,但我认为所有现代浏览器都可以安全地从 XSS 到 CSS。尽管我进行了一项特定的测试,但它已在我的 Chrome(可能还有其他浏览器)中执行

如果您的应用程序天真地将任何输入注入到<style>...</style>这个有趣的场景中,可能会发生:

<html>
<head>
<style>
p {
    text-align: center;
    color: red;
    /*user can inject here*/
    }</style><script>alert()</script>

}
</style>
</head>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

</body>
</html>

...

或者

p {
    /*injecting into bg's url*/
    background: url("garbage"}</style><script>alert()</script>/*) repeat;
    text-align: center;
    color: red;
} 

显然..一个 XSS

在此处输入图像描述

尽管现代浏览器默认不提供诸如此类的危险技巧behavior: url('some.htc'),但如果您使用X-UA-Compatible标题或元标记来强制 Microsoft Internet Explorer 处于不同的呈现模式,或者如果您省略了文档类型声明,Internet Explorer 将使用有这些东西的旧版本的行为。

演示(注意:我无法在 IE 11 上使用它):http: //jsbin.com/siyuhika/1/