文章作者: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等等这些协议进行巧妙的玩法,具体得你们研究了!

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

            1. 小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser

              XSS 原则上:只要XSS漏洞存在,可以编写任何功能的js脚本 [反射型漏洞利用] 键盘记录器:被记录下的数据会发送到攻击者指定的URL地址上 服务器:kali 客户端 启动apache2服务:ser ...

            2. CVE补丁安全漏洞【学习笔记】

              更新安卓系统的CVE补丁网站:https://www.cvedetails.com/vulnerability-list/vendor_id-1224/product_id-19997/version ...

            3. BAD APPLE C++控制台程序

              使用C++语言编写,如果想改成C语言,手动以GetProcAddress的方式来调用相关函数即可. #include <windows.h> #include <mmsystem.h ...

            4. XSS跨站脚本小结

              XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的一些标签,如<a><img>等. 参考链接:http://www.jb51.net/tools/ ...

            5. XSS跨站脚本小结(转)

              原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的 ...

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

              CMS(内容管理系统)很适合被用来做代码审计,尤其是现在CMS系统越来越流行,很多人愿意使用CMS搭建自己的项目.由于大部分CMS是一种开源项目,所以对于CMS的审计属于白盒测试,白盒测试让我们可以发 ...

            7. 前端Hack之XSS攻击个人学习笔记

              简单概述 **        此篇系本人两周来学习XSS的一份个人总结,实质上应该是一份笔记,方便自己日后重新回来复习,文中涉及到的文章我都会在末尾尽可能地添加上,此次总结是我在学习过程中所写,如有任 ...

            8. 二十五:XSS跨站值原理分类及攻击手法

              HTML DOM树 XSS跨站产生原理,危害,特点 本质,产生层面,函数类,漏洞操作对应层,危害影响,浏览器内核版本 XSS是什么? XSS全称跨站脚本(Cross Site Scripting),为 ...

            9. xss之渗透测试

              跨站脚本攻击:cross site script execution(通常简写为xss,因css与层叠样式表同名,故改为xss),是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用 ...

            随机推荐

            1. Java生成验证码简记

              验证码定义 验证码(captcha):是一种区分用户是计算机还是人的公共全自动程序. 作用:可以防止恶意破解密码.刷票.灌水,有效防止对某一个特定注册用户用特定程序进行暴力破解的登录尝试. 验证码交互 ...

            2. 【leetcode 简单】第三十八题 两数之和 II - 输入有序数组

              给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值( ...

            3. 读书笔记 ~ Python黑帽子 黑客与渗透测试编程之道

              Python黑帽子  黑客与渗透测试编程之道   <<< 持续更新中>>> 第一章: 设置python 环境 1.python软件包管理工具安装 root@star ...

            4. HDU 1034 Candy Sharing Game (模拟)

              题目链接 Problem Description A number of students sit in a circle facing their teacher in the center. Ea ...

            5. python3爬虫.3.下载网页图片

              目标,豆瓣读书, 下载页面书籍图片. import urllib.request import re #使用正则表达式 def getJpg(date): jpgList = re.findall(r ...

            6. (5)剑指Offer之栈变队列和栈的压入、弹出序列

              一 用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 问题分析: 先来回顾一下栈和队列的基本特点: 栈:后进先出(LIFO) 队列: ...

            7. Thinkphp的CURD

              CURD即(Create Update Read Delete)其实也就是等同于增删改查. C:Create 创建数据  对数据的添加 Create$m=new Model('User');$m=M( ...

            8. ConcurrentHashMap分析

              1.ConcurrentHashMap锁分段技术                     ConcurrentHashMap使用锁分段技术,首先将数据分成一段一段地存储,然后给每一段数据配一把锁,当一 ...

            9. python进阶之内置函数和语法糖触发魔法方法

              前言 前面已经总结了关键字.运算符与魔法方法的对应关系,下面总结python内置函数对应的魔法方法. 魔法方法 数学计算 abs(args):返回绝对值,调用__abs__; round(args): ...

            10. linux wc命令的作用。

              Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...