较有意思的Apple XSS(CVE-2016-7762)漏洞

文章作者:Avfisher


0x00 前言
应CVE作者的要求帮忙分析一下这个漏洞,实际上这是一个思路比较有意思的Apple XSS(CVE-2016-7762)。漏洞作者确实脑洞比较大也善于尝试和发掘,这里必须赞一个!


0x01 分析与利用
官方在2017年1月24日发布的安全公告中如下描述:

    • 可利用设备:iPhone 5 and later, iPad 4th generation and later, iPod touch 6th generation and later
    • 漏洞影响:处理恶意构造的web内容可能会导致XSS攻击
    • 漏洞描述:Safari在显示文档时产生此漏洞,且该漏洞已通过修正输入校验被解决了

那么,该漏洞真的如安全公告中所描述的那样被解决了吗?实际上,结果并非如此。
在分析之前,首先先了解一下这到底是个什么漏洞。
POC:

1. 创建一个文档文件,比如:

      • Word文件(docx)
      • PPT文件(pptx)
      • 富文本文件(rtf)

2. 添加一个超链接并插入JS脚本,如:

        • javascript:alert(document.domain);void(0)
        • javascript:alert(document.cookie);void(0)
        • javascript:alert(location.href);void(0)
        • javascript:x=new Image();x.src=”Xss Platform”;

3. 上传文件至web服务器然后在Apple设备上使用如下应用打开,如:

          • Safari
          • QQ Browser
          • Firefox Browser
          • Google Browser
          • QQ客户端
          • 微信客户端
          • 支付宝客户端

4. 点击文档文件中的超链接,上述JS脚本将会被执行从而造成了XSS漏洞

效果图如下:



            回顾一下上面的POC,发现其实该漏洞不仅仅存在于Safari中而是普遍存在于使用了WebKit的APP中。
            我们都知道,iOS APP要想像浏览器一样可以显示web内容,那么就必须使用WebKit。这是因为WebKit提供了一系列的类用于实现web页面展示,以及浏览器功能。而其中的WKWebView(或者UIWebView)就是用来在APP中显示web内容的。而当我们使用Safari或者使用了WebKit的APP去打开一个URL时,iOS就会自动使用WKWebView/UIWebView来解析和渲染这些页面或者文档。当受害人点击web服务器上的文档中的链接时,就会导致超链接中插入的javascript脚本被执行从而造成了XSS。这是因为WKWebView/UIWebView在解析和渲染远程服务器上的文档文件时并没有对文档中内嵌的内容做很好的输入校验导致的。
            该漏洞单从利用的角度来说还是比较鸡肋的,因为漏洞的触发必须依赖于用户点击文档中的超链接,笔者可以想到的可能的利用场景如下:

                      • 攻击者上传了一个包含了恶意JS的超链接(比如:个人博客链接)的Word文件(比如:个人简历)至招聘网站
                      • 受害者(比如:HR或者猎头)登录招聘网站且使用iPhone或者iPad上的Safari在线打开该简历中的“博客链接”,那么此时攻击者很可能就成功获取了受害者的该网站cookie之类的信息

            0x02 思考
            这个XSS漏洞本身其实并没有太多的技术含量或者技巧,但是在挖掘思路上却是很有意思且值得思考的。漏洞作者并没有将利用js直接插入至web页面本身,而是巧妙地利用了某些文档中的超链接绕过了WebKit的输入校验。这也从一定程度上再次阐释了web安全中一个最基本的原则即“所有输入都是不安全的”,不管是直接输入或者是间接输入。我们在做应用或者产品的安全设计时最好能够确认各种信任边界以及输入输出,且做好校验过滤以及必要的编码,这样才能有效的防范这种间接输入导致的漏洞。


            0x03 作者语录
            其实这个漏洞的产生早在12年的时候就有类似的案例了,目前Apple修复了该漏洞后我还继续做了些深入的研究,其实不仅仅局限于javascript的协议,当然还可以用上sms://,tel:10086等等这些协议进行巧妙的玩法,具体得你们研究了!

            时间: 2024-10-09 19:50:26

            较有意思的Apple XSS(CVE-2016-7762)漏洞的相关文章

            jQuery跨站脚本漏洞XSS with $(location.hash)漏洞

            jquery下载地址:https://code.jquery.com/jquery/ 影响范围: 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷,可能导致LOCATION.HASH跨站漏洞 已测试成功版本:     jquery-1.6.min.js,jquery-1.6.1.min.js,jquery-1.6.2.min.js     jquery-1.5所有版本     jquery-1.4所有版本     jquery-1.3所有版本     jquery-1.2所

            XSS跨站脚本小结(转)

            原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的一些标签,如<a><img>等. 参考链接:http://www.jb51.net/tools/xss.htm  http://d3adend.org/xss/ghettoBypass ';alert(String.fromCharCode(88,83,83))//\';alert(S

            发现CVE-2018-11512-wityCMS 0.6.1 持久型XSS

            CMS(内容管理系统)很适合被用来做代码审计,尤其是现在CMS系统越来越流行,很多人愿意使用CMS搭建自己的项目.由于大部分CMS是一种开源项目,所以对于CMS的审计属于白盒测试,白盒测试让我们可以发现更多的安全漏洞,而且一旦我们发现了这些漏洞,由于其被广泛使用,所以它的漏洞的影响范围也是呈指数级增长的.这是因为通过白盒测试我们可以查看到程序的内部结构,从而更清楚的理解程序的工作原理. WityCMS就是一个由creatiwiwiwiwiwity制作的CMS系统,它帮助管理不同用途的内容,如个人

            一个绕过某SRC厂商三处XSS过滤的payload

            前言 在某次src的漏洞挖掘过程中,发现了一个payload绕过了三处xss过滤,个人觉得还是挺有意思的,所以记录一下. 从一个被忽略的self xss说起 在某页面信息如下,我决定对回复内容进行xss测试: 插入一个<img/src=1>以后可以看到标签成功解析: 继续深入测试的时候却发现了问题,我们的payload应该是触发了xss防御机制无法提交成功,所以服务器放回501错误. 开始慢慢探测xss filter的规则,首先我们使用<img/src=1>可以,<img/s

            初探XSS

            1. 基础准备知识 (1) php: <?php ?>部分由服务器解析后并连带html代码一并返回给浏览器,类似jsp的操作,一般开发中都使用smarty模板将前端后端分开.所以在XSS跨站中,可以使用get参数传值的方式进行XSS攻击 (2) EL表达式:对于EL表达式${name},EL表达式首先从page,session,request, application.范围内检索信息,直到检索到name的信息后则会停止检索. 非持久形XSS:通过构造编码恶意URL发送给用户,当其点击的时候则会

            使用Fiddler的X5S插件查找XSS漏洞

            OWASP top 10的安全威胁中的CrossSite Scripting(跨站脚本攻击),允许攻击者通过浏览器往网站注入恶意脚本.这种漏洞经常出现在web应用中需要用户输入的地方,如果网站有XSS漏洞,攻击者就可以通过这种漏洞向浏览网站的用户发送恶意脚本,同时也可以利用该漏洞偷取sessionid,用来劫持用户帐户的会话. 所以网站开发者必须针对这种攻击进行适当的测试,必须过滤网站的每个输入及输出.为了使漏洞检测更容易,也可以使用各种扫描器,有很多自动或手动工具可以帮我们查找这些漏洞.X5S

            XSS脚本攻击漫谈

            XSS跨站脚本攻击一直都被认为是客户端  Web安全中最主流的攻击方式.因为  Web环境的复杂性以及 XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了有针对性的具体实例分析.跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的 HTML代码,从而盗取用户资料.利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方

            漏洞都是怎么编号的CVE/CAN/BUGTRAQ/CNCVE/CNVD/CNNVD

            在一些文章和报道中经常提到安全漏洞CVE-1999-1046这种CVE开头的漏洞编号,这篇文章将常见的漏洞ID的表示方法做下介绍: 1.以CVE开头,如CVE-1999-1046这种 CVE 的英文全称是"Common Vulnerabilities & Exposures"公共漏洞和暴露.CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称.使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具

            存储型xss调研

            概念 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行. 常见的xss攻击方法 1. 绕过XSS-Filter,利用<>标签注入Html/JavaScript代码: 2. 利用HTML标签的属性值进行xss攻击.例如:<img src="javascript:alert('xss')"/>:(当然并不是所有的Web浏览器都支持Javascr