替代定义内联javascript表达式

Jas*_*ngh 6 javascript css xss expression

我一直在学习Web应用程序安全渗透测试.该场景是,测试环境演示Web应用程序中存在一个跨站点脚本漏洞,该漏洞是为练习而开发的.我有一个基于javascript表达式的xss有效负载:

<div style="width: expression(alert(/XSS/))"></div>
Run Code Online (Sandbox Code Playgroud)

我知道自IE 8以来表达式已被弃用.它在IE7中运行良好.因此,当我输入上述有效负载时,Web应用程序返回

<div></div>
Run Code Online (Sandbox Code Playgroud)

它会破坏所有其他属性和值.但当我改变有效载荷时

<div style="width: expression'(alert(/XSS/))'">
Run Code Online (Sandbox Code Playgroud)

它不是有效的有效载荷意味着它不会执行.所以,我想弄清楚是否有任何替代方法可以在内联样式属性中定义表达式,就好像我们可以放置除了single_quote之外的其他东西而不会破坏代码.或者,如果有任何其他方式通过style属性执行javascript.

Kee*_*ter 4

expression()是动态指定html节点属性的唯一方法。它接受任何有效的JScript表达式作为参数。因此从技术上讲,无法通过 html 节点上的 style 属性执行 javascript (JScript !== javascript)。

此功能不存在(或已被弃用)的原因是它造成了相当大的安全漏洞。如果您想要动态 html 元素,您可以使用 css 来解决这个问题,特别是通过媒体查询。但如果您想走这条路,请尝试查看expression()文档。

在 javascript(也包括 JScript)中,()调用函数。因此,在调用表达式名称之前,在表达式名称后面抛出'or是无效语法。"除了“single_quote”之外,您可能还可以放置其他不会破坏代码的东西,但您不会将其放置在(). 尝试查找 JScript 语法。这是最后一个可能有帮助的资源。

  • 感谢您提供的资源和非常好的信息。样式属性是我必须注入的全部内容。如果其他人可以帮忙,我会再等一段时间,否则会将您的答案标记为正确并+100。 (2认同)