From b0e7b4517b98691cd0ac64221ef883b34bf2fdf2 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 29 Sep 2025 22:05:15 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-web/electron-des --- .../electron-desktop-apps/README.md | 253 ++++++++++-------- 1 file changed, 140 insertions(+), 113 deletions(-) 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 ca5b98491..d41c2cebe 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 @@ -4,23 +4,23 @@ ## Utangulizi -Electron huunganisha backend ya ndani (na **NodeJS**) na frontend (**Chromium**), ingawa haijumuishi baadhi ya mifumo ya usalama ya vichunguzi vya kisasa. +Electron inaunganisha backend ya ndani (kwa **NodeJS**) na frontend (**Chromium**), ingawa haina baadhi ya mekanismo ya usalama ya vivinjari vya kisasa. -Mara nyingi utapata msimbo wa programu ya Electron ndani ya faili la `.asar`; ili kupata msimbo, unahitaji kuliondoa: +Kawaida unaweza kupata msimbo wa app ya Electron ndani ya faili la `.asar`; ili kupata msimbo unahitaji kuitoa: ```bash npx asar extract app.asar destfolder #Extract everything npx asar extract-file app.asar main.js #Extract just a file ``` -Katika msimbo wa chanzo wa app ya Electron, ndani ya `packet.json`, unaweza kupata faili `main.js` iliyobainishwa ambapo security configs zimewekwa. +Katika msimbo wa chanzo wa app ya Electron, ndani ya `packet.json`, unaweza kupata faili `main.js` iliyobainishwa ambapo mipangilio ya usalama imewekwa. ```json { "name": "standard-notes", "main": "./app/index.js", ``` -Electron ina aina mbili za michakato: +Electron ina aina 2 za michakato: - Mchakato Mkuu (ina ufikiaji kamili wa NodeJS) -- Mchakato wa Renderer (unapaswa kuwa na ufikiaji uliopunguzwa wa NodeJS kwa sababu za usalama) +- Mchakato wa Renderer (inapaswa kuwa na ufikiaji uliopunguzwa wa NodeJS kwa sababu za usalama) ![](<../../../images/image (182).png>) @@ -32,20 +32,20 @@ let win = new BrowserWindow() //Open Renderer Process win.loadURL(`file://path/to/index.html`) ``` -Mipangilio ya **mchakato wa renderer** yanaweza **kuwekwa** katika **mchakato mkuu** ndani ya faili main.js. Baadhi ya mipangilio hiyo itaweza **kuzuia Electron application kupata RCE** au udhaifu mwingine ikiwa **mipangilio imewekwa ipasavyo**. +Mipangilio ya **renderer process** yanaweza **kusanidiwa** katika **main process** ndani ya faili main.js. Baadhi ya mipangilio zitaweza **kuzuia programu ya Electron kupata RCE** au udhaifu mwingine ikiwa **mipangilio yamewekwa kwa usahihi**. -The electron application **inaweza kufikia kifaa** kupitia Node apis ingawa inaweza kuwekewa mipangilio ili kuzuia hilo: +Programu ya Electron inaweza **kufikia kifaa** kupitia Node apis ingawa inaweza kusanidiwa kuzuia hilo: -- **`nodeIntegration`** - is `off` by default. If on, allows to access node features from the renderer process. -- **`contextIsolation`** - is `on` by default. If off, main and renderer processes aren't isolated. -- **`preload`** - empty by default. -- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - is off by default. It will restrict the actions NodeJS can perform. +- **`nodeIntegration`** - imezimwa (`off`) kwa chaguo-msingi. Ikiwa imewashwa, inaruhusu kufikia vipengele vya node kutoka kwa **renderer process**. +- **`contextIsolation`** - imewashwa (`on`) kwa chaguo-msingi. Ikiwa imezimwa, **main** na **renderer processes** hazitengwa. +- **`preload`** - tupu (`empty`) kwa chaguo-msingi. +- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - imezimwa kwa chaguo-msingi. Itafanya vikwazo kwa vitendo vinavyoweza kufanywa na NodeJS. - Node Integration in Workers -- **`nodeIntegrationInSubframes`**- is `off` by default. -- If **`nodeIntegration`** is **enabled**, this would allow the use of **Node.js APIs** in web pages that are **loaded in iframes** within an Electron application. -- If **`nodeIntegration`** is **disabled**, then preloads will load in the iframe +- **`nodeIntegrationInSubframes`** - imezimwa (`off`) kwa chaguo-msingi. +- Ikiwa **`nodeIntegration`** imewezeshwa (**enabled**), hii itaruhusu matumizi ya **Node.js APIs** katika kurasa za wavuti ambazo zime **loaded in iframes** ndani ya programu ya Electron. +- Ikiwa **`nodeIntegration`** imezimwa (**disabled**), basi preloads zitapakia ndani ya iframe -Example of configuration: +Mfano wa configuration: ```javascript const mainWindowOptions = { title: "Discord", @@ -97,13 +97,14 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" /> ``` ### Kukamata trafiki -Badilisha usanidi wa start-main na uongeze matumizi ya proxy kama: +Badilisha usanidi wa start-main na ongeza matumizi ya proxy kama: ```javascript "start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors", ``` ## Electron Local Code Injection -Ikiwa unaweza kuendesha App ya Electron kwa ndani, kuna uwezekano unaweza kuifanya iendeshe msimbo wowote wa javascript. Angalia jinsi katika: +Ikiwa unaweza kuendesha App ya Electron kwenye mashine yako (locally), inawezekana unaweza kuifanya itekeleze arbitrary javascript code. Angalia jinsi katika: + {{#ref}} ../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -111,7 +112,7 @@ Ikiwa unaweza kuendesha App ya Electron kwa ndani, kuna uwezekano unaweza kuifan ## RCE: XSS + nodeIntegration -Ikiwa **nodeIntegration** imewekwa kuwa **on**, javascript ya ukurasa wa wavuti inaweza kutumia vipengele za Node.js kwa urahisi kwa kuitisha `require()`. Kwa mfano, njia ya kuendesha programu calc kwenye Windows ni: +Ikiwa **nodeIntegration** imewekwa kuwa **on**, JavaScript ya ukurasa wa wavuti inaweza kutumia vipengele vya Node.js kwa urahisi kwa kuita `require()`. Kwa mfano, njia ya kuendesha programu calc kwenye Windows ni: ```html ``` -## RCE: webviewTag + dhaifu preload IPC + shell.openExternal +## RCE: webviewTag + vulnerable preload IPC + shell.openExternal Udhaifu huu unaweza kupatikana katika **[this report](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**. -The **webviewTag** ni **sifa iliyopitwa na wakati** inayoruhusu matumizi ya **NodeJS** katika **renderer process**, ambayo inapaswa kuzimwa kwani inaruhusu kupakia script ndani ya **preload context** kama: +The **webviewTag** ni **sifa iliyokataliwa** inayoruhusu matumizi ya **NodeJS** katika **renderer process**, ambayo inapaswa kuzimwa kwani inaruhusu kupakia script ndani ya **preload context** kama: ```xml ``` -Kwa hivyo, mdukuzi ambaye anafanikiwa kupakia ukurasa wowote anaweza kutumia tag hiyo ili **load an arbitrary preload script**. +Kwa hiyo, mshambulizi ambaye anafanikiwa kupakia ukurasa wowote angeweza kutumia tag hiyo ili **load an arbitrary preload script**. -Script hii ya preload ilitumiwa vibaya kisha kuitumia kuita **vulnerable IPC service (`skype-new-window`)** ambayo ilikuwa ikipiga **`shell.openExternal`** ili kupata RCE: +Preload script hii ilitumiwa vibaya kisha kuita **vulnerable IPC service (`skype-new-window`)** ambayo ilikuwa ikiita **`shell.openExternal`** ili kupata RCE: ```javascript (async() => { const { ipcRenderer } = require("electron"); @@ -248,13 +249,13 @@ await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Do }, 5000); })(); ``` -## Kusoma Mafaili ya Ndani: XSS + contextIsolation +## Kusoma Faili za Ndani: XSS + contextIsolation -**Kuzima `contextIsolation` kunaruhusu matumizi ya tags ``**, sawa na `