欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

看我如何利用JavaScript全局变量绕过XSS过滤器

来源:本站整理 作者:佚名 时间:2019-06-13 TAG: 我要投稿


 
写在前面的话
如果你发现你的攻击目标存在XSS漏洞,但是你所有的漏洞利用尝试似乎都被XSS过滤器(或输入验证和Web应用防火墙规则)屏蔽掉了的话,那你该怎么办?非常好,在这篇文章中,我们将告诉大家如何利用JavaScript全局变量来绕过这些XSS安全防护机制。
接下来,我们将讨论利用反射型或存储型XSS漏洞的各种可能性,并绕过我们与目标站点之间的XSS过滤器或防火墙。而在我们看来,其中一种最为有效的绕过方法就是利用类似self、document、this、top或window这样的全局变量。
注意:在接下来的Payload测试过程中,我主要使用的是PortSwigger Web Security Academy实验平台,但是你也可以使用浏览器自带的JavaScript控制台来进行测试。
 
前期准备工作
JavaScript全局变量到底是“何方神圣”?
根据javapoint.com的介绍:一个JavaScript全局变量必须在函数外声明,或与窗口对象一起声明,并且能够被任何函数访问。
我们假设,你的目标Web应用程序(某个JavaScript字符串或JavaScript函数存在安全问题)存在反射型XSS漏洞。那么,请大家先看看下面这段PHP脚本代码:
echo "var message = 'Hello ".$_GET["name"]."';alert(message);";
大家可以看到,这里的“name”参数存在漏洞。但是在我们的演示样例中,目标Web应用程序设置了一个过滤器来防止他人利用“document.cookie”这个字符串来作为用户输入数据,过滤器使用的正则表达式形如“/document[^.].[^.]cookie/”。大家先看看下面这些Payload:

在这里,JavaScript全局变量可以用来绕过这个过滤器。我们有很多种方法来从window对象或self对象中访问到document.cookie,比如说,“window[“document”][“cookie”]”就不会被这个过滤器过滤掉:


大家可以从上面的截图中看到,我们可以利用“self“alert”;”(该语句的作用等同于“alert(“foo”);”)这样的语句来访问任何一个JavaScript函数。这种类型的语句可以帮助我们绕过很多存在安全问题的过滤器。很明显,我们几乎可以在任何地方通过注释的方式来使用这种类型的语句:
(/* this is a comment */self/* foo */)[/*bar*/"alert"/**/]("yo")

 
关于“self”对象
Window.self的只读属性可以将window对象本身以WindowProxy返回,它能够以“window.self”或直接是“self”的形式来使用。这种单独标注的使用形式有点就在于它跟非window对象的使用场景很相似,使用“self”,我们就可以尝试找到非window对象的使用场景,因为“self”会被解析为“window.self”。比如说Web Workers,在worker场景下,“self”将会被解析为“WorkerGlobalScope.self”。【参考资料】
我们可以利用以下对象来调用任何一种JavaScript函数:
windowself_selfthistopparentframes
 
1、 字符串连接和十六进制转义序列
目前,在绕过Web应用防火墙规则时,最常见的一种技术就是字符串连接。这种方式不仅适用于远程代码执行和SQL注入攻击,而且同样适用于JavaScript场景。现在有很多Web应用防火墙所使用的过滤器是基于JavaScript函数名列表来实现的,而这种类型的过滤器可以屏蔽包含了类似“alert()”或“String.fromCharCode()”字符串的请求。在全局变量的帮助下,我们就可以使用字符串连接或十六进制转义序列来轻松绕过这些过滤器了。比如说:
/
** alert(document.cookie);
/
self“ale”+”rt”

当然了,还有一种更加复杂的语句可以绕过过滤器,也就是用十六进制转义序列来替换之前的字符串。任何字符码低于“256”的字符都可以使用十六进制码来表示,即使用“x”转义序列:

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载