diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index f42bf75a9..ad7c459ce 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -6,12 +6,12 @@ Electron结合了本地后端(使用**NodeJS**)和前端(**Chromium**),尽管它缺乏现代浏览器的一些安全机制。 -通常,您可能会在`.asar`应用程序中找到electron应用程序代码,获取代码需要提取它: +通常,您可能会在`.asar`应用程序中找到electron应用代码,获取代码需要提取它: ```bash npx asar extract app.asar destfolder #Extract everything npx asar extract-file app.asar main.js #Extract just a file ``` -在 Electron 应用的源代码中,在 `packet.json` 文件内,可以找到指定的 `main.js` 文件,其中设置了安全配置。 +在Electron应用的源代码中,在`packet.json`文件内,可以找到指定的`main.js`文件,其中设置了安全配置。 ```json { "name": "standard-notes", @@ -37,7 +37,7 @@ win.loadURL(`file://path/to/index.html`) Electron 应用程序 **可以通过 Node apis 访问设备**,尽管可以配置以防止它: - **`nodeIntegration`** - 默认情况下为 `off`。如果开启,允许从 renderer process 访问 node 特性。 -- **`contextIsolation`** - 默认情况下为 `on`。如果关闭,主进程和渲染进程不会隔离。 +- **`contextIsolation`** - 默认情况下为 `on`。如果关闭,主进程和渲染进程不被隔离。 - **`preload`** - 默认情况下为空。 - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - 默认情况下为 off。它将限制 NodeJS 可以执行的操作。 - Node Integration in Workers @@ -111,7 +111,7 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" /> ## RCE: XSS + nodeIntegration -如果 **nodeIntegration** 设置为 **on**,网页的 JavaScript 可以通过调用 `require()` 轻松使用 Node.js 功能。例如,在 Windows 上执行 calc 应用程序的方法是: +如果 **nodeIntegration** 设置为 **on**,网页的 JavaScript 可以通过调用 `require()` 轻松使用 Node.js 功能。例如,在 Windows 上执行计算器应用程序的方法是: ```html ``` -> [!NOTE] > **如果 `contextIsolation` 开启,这将不起作用** +> [!NOTE] > **如果 `contextIsolation` 开启,这将无法工作** ## RCE: XSS + contextIsolation @@ -157,11 +157,11 @@ _**contextIsolation**_ 引入了 **网页脚本与 JavaScript Electron 内部代 如果上下文没有被隔离,攻击者可以: 1. 在渲染器中执行 **任意 JavaScript**(XSS 或导航到外部网站) -2. **覆盖内置方法**,该方法用于预加载或 Electron 内部代码,变为自己的函数 +2. **覆盖内置方法**,该方法在预加载或 Electron 内部代码中被使用,替换为自己的函数 3. **触发** 使用 **被覆盖的函数** 4. RCE? -内置方法可以在两个地方被覆盖:在预加载代码中或在 Electron 内部代码中: +内置方法可以被覆盖的地方有两个:在预加载代码中或在 Electron 内部代码中: {{#ref}} electron-contextisolation-rce-via-preload-code.md @@ -187,7 +187,7 @@ window.addEventListener('click', (e) => { 在部署 Electron 桌面应用程序时,确保 `nodeIntegration` 和 `contextIsolation` 的正确设置至关重要。已确定,**客户端远程代码执行 (RCE)** 针对预加载脚本或 Electron 的主进程本地代码在这些设置到位时有效防止。 -当用户与链接交互或打开新窗口时,会触发特定的事件监听器,这对应用程序的安全性和功能至关重要: +当用户与链接互动或打开新窗口时,会触发特定的事件监听器,这对应用程序的安全性和功能至关重要: ```javascript webContents.on("new-window", function (event, url, disposition, options) {} webContents.on("will-navigate", function (event, url) {} @@ -200,7 +200,7 @@ webContents.on("will-navigate", function (event, url) {} ![https://miro.medium.com/max/1400/1*ZfgVwT3X1V_UfjcKaAccag.png](<../../../images/image (963).png>) -Electron JS安全最佳实践建议不要使用`openExternal`函数接受不受信任的内容,因为这可能通过各种协议导致RCE。操作系统支持不同的协议,这些协议可能触发RCE。有关此主题的详细示例和进一步解释,可以参考[此资源](https://positive.security/blog/url-open-rce#windows-10-19042),其中包括能够利用此漏洞的Windows协议示例。 +Electron JS安全最佳实践建议不要使用`openExternal`函数接受不受信任的内容,因为这可能通过各种协议导致RCE。操作系统支持不同的协议,这些协议可能触发RCE。有关此主题的详细示例和进一步解释,可以参考[这个资源](https://positive.security/blog/url-open-rce#windows-10-19042),其中包括能够利用此漏洞的Windows协议示例。 在macos中,`openExternal`函数可以被利用来执行任意命令,例如`shell.openExternal('file:///System/Applications/Calculator.app')`。 @@ -226,11 +226,11 @@ window.open( ``` ## 读取内部文件:XSS + contextIsolation -**禁用 `contextIsolation` 使得可以使用 `` 标签**,类似于 `