Javascript XSS攻击和样式属性
存在已知样式的属性XSS攻击,如:Javascript XSS攻击和样式属性,javascript,html,coding-style,xss,Javascript,Html,Coding Style,Xss,存在已知样式的属性XSS攻击,如: <DIV STYLE="width: expression(alert('XSS'));"> 所以基本上我允许ASCII属性带有数值或非常有限的字符串值(基本上是字体名称),不允许使用任何类似于调用的东西 问题是这足够好吗?是否存在任何可能会发生类似情况的攻击: <DIV STYLE="this-is-js-property: alert 'XSS';"> 成功了吗 有人能想到这种测试的XSS漏洞吗 说清楚 我需要样式属性,因为
<DIV STYLE="width: expression(alert('XSS'));">
所以基本上我允许ASCII属性带有数值或非常有限的字符串值(基本上是字体名称),不允许使用任何类似于调用的东西
问题是这足够好吗?是否存在任何可能会发生类似情况的攻击:
<DIV STYLE="this-is-js-property: alert 'XSS';">
成功了吗
有人能想到这种测试的XSS漏洞吗
说清楚
我需要样式属性,因为像TinyMCE这样的许多工具都会使用它们并进行无害的过滤
禁用样式属性会严重损害功能
所以我更喜欢通过普通案例删除所有可能使用@import、url、表达式等的内容,同时确保基本css语法正常
回答
不,由于点击劫持漏洞是不安全的。
< P>有一个开放的基础,称之为帮助你。 要回答您的问题,是否存在任何攻击……
;对!
这里有大量的文档,有一些库可以用来正确地转义所有XSS代码
阅读。安全规则#1:如果你是最没有疑问的,假设有一个洞
你想达到什么目标?什么功能会导致CSS来自不受信任的源?这不起作用,因为点击劫持漏洞 例如:
<a href="http://example.com/attack.html" style="display: block; z-index: 100000; opacity: 0.5; position: fixed; top: 0px; left: 0; width: 1000000px; height: 100000px; background-color: red;"> </a>
网址:
该代码将得到完美验证,但可能会造成严重损害
因此-经验法则使用非常严格的白名单或不允许样式属性。是的,可以对样式属性使用XSS攻击 这些样式是注入的,因为我们没有在特定jsp页面的标记中声明它们,但在安全组审核时通过了:
<img src="<path here>" style=x:ex/**/pression
(alert(54163)) ".gif"
“style=x:ex/**/pression
(警报(54163))“.gif”
我正在考虑使用HTTP过滤器在这里阻止它,但我仍在研究它
我们也没有对隐藏的输入字段进行保护,这也通过了:
<input type="hidden" name="<variable name here>" value="<value here>" style=x:ex/**/pression(alert
(54163)) "">
使用Burpsuite这样的工具,您可以动态修改请求,将XSS注入到类似这样的标记中。但是,使用OWASP的ESAPI,您可以添加保护。我们没有使用JSTL标记,因为它是旧的遗留代码,所以这是最好的短期解决方案
对于我使用的隐藏输入
<input type="hidden" name="id" value="<%=ESAPI.encoder().encodeForHTMLAttribute(id)%>"
干得好,我不知道这其中有很多复杂的html白名单过滤框架,比如。一个有足够时间的熟练攻击者总能找到击败黑名单过滤器的方法。你能更具体一点吗?有什么具体的攻击吗?我搜索过这些网站,没有发现任何允许使用css进行此类攻击的东西标识符,只有数字。这就是我问的原因。有很多种编码html的方法。你可以使用html实体作为一种。OWASP文档中有所有的示例,其中的库正确地转义了all
possibilitesHTML实体和其他“有线”“不允许使用编码方式,正如您在语法中看到的那样,只允许非常严格的字符串子集拒绝任何“异常”但是在你的例子中,样式和src属性没有正确转义,也就是说,它们不能没有引号和正确编码的内容。我展示的XS实际上是通过我们的js代码得到的。这一点很好!我认为现在我们可以使用X-Frame-Options来防御点击劫持漏洞。但这和虚假的a
标签(带有恶意链接)或带有恶意src的
)一样是一个漏洞。在我的例子中,这是一个讨论系统,人们可以在CommonMark+HTML中发表评论,它们可能包括style=…
属性。(我不是原来的海报,我只是有一个类似的“问题”。)
<input type="hidden" name="<variable name here>" value="<value here>" style=x:ex/**/pression(alert
(54163)) "">
<input type="hidden" name="id" value="<%=ESAPI.encoder().encodeForHTMLAttribute(id)%>"