定义内联 JavaScript 表达式的替代方法
Alternative to define in-line javascript expressions
我一直在学习Web应用程序安全渗透测试。这种情况是,在为练习而开发的测试环境演示 Web 应用程序中存在一个跨站点脚本漏洞。我有一个xss有效负载,它是基于javascript表达式的:
<div style="width: expression(alert(/XSS/))"></div>
我知道这些表达式自IE 8以来已弃用。它在IE7中工作正常。 所以,当我输入上面的有效负载时,Web应用程序返回
<div></div>
它撕掉所有其他属性和值。但是当我像
<div style="width: expression'(alert(/XSS/))'">
它不是有效的有效负载意味着它不会执行。因此,我试图弄清楚是否有任何替代方法可以在内联样式属性中定义表达式,例如我们是否可以放置除single_quote之外的其他东西,这不会破坏代码。或者,如果还有其他方法可以通过样式属性执行javascript。
expression()
是动态指定 html 节点属性的唯一方法。它接受任何有效的 JScript 表达式作为参数。所以从技术上讲,没有办法通过html节点上的style属性来执行javascript(JScript!== javascript)。
此功能不存在(或已被弃用)的原因是因为它创建了一个相当大的安全漏洞。如果你想拥有动态的html元素,你可以用css解决这个问题,特别是通过媒体查询。但是,如果您想沿着这条路走下去,请尝试查看expression()
文档。
在javascript(JScript)中,()
调用一个函数。因此,在调用表达式名称之前,在表达式名称后抛出'
或"
是无效的语法。除了"single_quote"之外,您可能还可以放置其他不会破坏代码的东西,但您不会将其放在()
之前。尝试查找 JScript 语法。这是最后一个可能有帮助的资源。
相关文章:
- 是否存在将String转换为可执行的c++表达式的方法
- 使用replace方法替换innerHTML以及在Javascript中不起作用的正则表达式
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- 有没有一种方法可以将javascript和css放在表达式引擎的wigwam编辑器中
- 如何在字符串上组合JS replace()方法中的3个正则表达式模式
- Object.Prototype 方法和 IIFE(立即调用的函数表达式)中的“use strict”
- Javascript 将方法替换为数组和正则表达式
- 我可以在 jQuery 过滤器方法上使用多选择器表达式吗?
- 比这更好的正则表达式方法
- 使用 Javascript 函数表达式的首选方法是什么
- 在数组中存储 JS 正则表达式捕获组的最佳方法
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 多个 JavaScript 方法调用未在表达式中调用
- 定义内联 JavaScript 表达式的替代方法
- 正则表达式和数组:最有效的方法
- 进行此正则表达式替换的好方法
- 使用正则表达式时出现 Javascript 错误 - 对象不支持此属性或方法
- 最佳正则表达式方法
- 在 Javascript 中使用替换方法插入的正则表达式
- 继承方法(原型)和静态方法(表达式)的区别是什么?