From 2e4e99812b48629452f1cc5a2312c8d63dcf100e Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 7 Jan 2025 18:27:57 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-web/electron-des --- .../electron-desktop-apps/README.md | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 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 be14b42ce..5b36d3502 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 @@ -20,11 +20,11 @@ U izvornoj kodu Electron aplikacije, unutar `packet.json`, možete pronaći nave Electron ima 2 tipa procesa: - Glavni proces (ima potpun pristup NodeJS-u) -- Proces renderera (treba da ima ograničen pristup NodeJS-u iz bezbednosnih razloga) +- Proces renderovanja (treba da ima ograničen pristup NodeJS-u iz bezbednosnih razloga) ![](<../../../images/image (182).png>) -**Proces renderera** će biti prozor pregledača koji učitava datoteku: +**Proces renderovanja** će biti prozor pregledača koji učitava datoteku: ```javascript const { BrowserWindow } = require("electron") let win = new BrowserWindow() @@ -32,18 +32,18 @@ let win = new BrowserWindow() //Open Renderer Process win.loadURL(`file://path/to/index.html`) ``` -Podešavanja **renderer process** mogu se **konfigurisati** u **main process** unutar main.js datoteke. Neka od podešavanja će **sprečiti Electron aplikaciju da dobije RCE** ili druge ranjivosti ako su **podešavanja ispravno konfigurisana**. +Podešavanja **renderer procesa** mogu se **konfigurisati** u **main procesu** unutar main.js datoteke. Neka od podešavanja će **sprečiti Electron aplikaciju da dobije RCE** ili druge ranjivosti ako su **podešavanja ispravno konfigurisana**. Electron aplikacija **može pristupiti uređaju** putem Node apija, iako se može konfigurisati da to spreči: -- **`nodeIntegration`** - je `off` po defaultu. Ako je uključen, omogućava pristup node funkcijama iz renderer process. -- **`contextIsolation`** - je `on` po defaultu. Ako je isključen, main i renderer procesi nisu izolovani. +- **`nodeIntegration`** - je `isključen` po defaultu. Ako je uključen, omogućava pristup node funkcijama iz renderer procesa. +- **`contextIsolation`** - je `uključen` po defaultu. Ako je isključen, glavni i renderer procesi nisu izolovani. - **`preload`** - prazan po defaultu. - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - je isključen po defaultu. Ograničiće akcije koje NodeJS može izvesti. -- Node Integration u Workers -- **`nodeIntegrationInSubframes`** - je `off` po defaultu. +- Node Integration u Radnicima +- **`nodeIntegrationInSubframes`** - je `isključen` po defaultu. - Ako je **`nodeIntegration`** **omogućen**, to bi omogućilo korišćenje **Node.js API-a** na web stranicama koje su **učitane u iframes** unutar Electron aplikacije. -- Ako je **`nodeIntegration`** **onemogućen**, tada će preload-ovi učitati u iframe. +- Ako je **`nodeIntegration`** **onemogućen**, tada će preloads biti učitani u iframe. Primer konfiguracije: ```javascript @@ -101,9 +101,9 @@ Izmenite start-main konfiguraciju i dodajte korišćenje proksija kao što su: ```javascript "start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors", ``` -## Electron lokalna injekcija koda +## Electron Local Code Injection -Ako možete lokalno izvršiti Electron aplikaciju, moguće je da možete izvršiti proizvoljan JavaScript kod. Proverite kako u: +Ako možete lokalno izvršiti Electron aplikaciju, moguće je da možete izvršiti proizvoljni JavaScript kod. Proverite kako u: {{#ref}} ../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -123,7 +123,7 @@ top.require("child_process").exec("open /System/Applications/Calculator.app") ## RCE: preload -Skripta navedena u ovoj postavci se l**oaduje pre drugih skripti u rendereru**, tako da ima **neograničen pristup Node API-ima**: +Skripta navedena u ovom podešavanju se l**oaduje pre drugih skripti u rendereru**, tako da ima **neograničen pristup Node API-ima**: ```javascript new BrowserWindow{ webPreferences: { @@ -177,7 +177,7 @@ electron-contextisolation-rce-via-ipc.md ### Obilaženje događaja klika -Ako postoje ograničenja koja se primenjuju kada kliknete na link, možda ćete moći da ih zaobiđete **srednjim klikom** umesto običnim levim klikom. +Ako postoje ograničenja kada kliknete na link, možda ćete moći da ih zaobiđete **srednjim klikom** umesto običnim levim klikom. ```javascript window.addEventListener('click', (e) => { ``` @@ -187,12 +187,12 @@ Za više informacija o ovim primerima pogledajte [https://shabarkin.medium.com/1 Kada se implementira Electron desktop aplikacija, osiguranje ispravnih podešavanja za `nodeIntegration` i `contextIsolation` je ključno. Utvrđeno je da **izvršavanje daljinskog koda na klijentskoj strani (RCE)** koje cilja preload skripte ili Electron-ov nativni kod iz glavnog procesa efikasno sprečava sa ovim podešavanjima. -Kada korisnik interaguje sa linkovima ili otvara nove prozore, aktiviraju se specifični slušaoci događaja, koji su ključni za bezbednost i funkcionalnost aplikacije: +Kada korisnik interaguje sa linkovima ili otvara nove prozore, aktiviraju se specifični slušači događaja, koji su ključni za bezbednost i funkcionalnost aplikacije: ```javascript webContents.on("new-window", function (event, url, disposition, options) {} webContents.on("will-navigate", function (event, url) {} ``` -Ovi slušatelji su **prepisani od strane desktop aplikacije** kako bi implementirali svoju **poslovnu logiku**. Aplikacija procenjuje da li bi navigirani link trebao biti otvoren interno ili u spoljašnjem web pretraživaču. Ova odluka se obično donosi putem funkcije, `openInternally`. Ako ova funkcija vrati `false`, to ukazuje da link treba biti otvoren spolja, koristeći funkciju `shell.openExternal`. +Ovi slušatelji su **prepisani od strane desktop aplikacije** da implementiraju svoju vlastitu **poslovnu logiku**. Aplikacija procenjuje da li bi navigirani link trebao biti otvoren interno ili u spoljašnjem web pretraživaču. Ova odluka se obično donosi putem funkcije, `openInternally`. Ako ova funkcija vrati `false`, to ukazuje da link treba biti otvoren spolja, koristeći funkciju `shell.openExternal`. **Evo pojednostavljenog pseudokoda:** @@ -202,7 +202,7 @@ Ovi slušatelji su **prepisani od strane desktop aplikacije** kako bi implementi Electron JS sigurnosne najbolje prakse savetuju protiv prihvatanja nepouzdanog sadržaja sa funkcijom `openExternal`, jer to može dovesti do RCE kroz različite protokole. Operativni sistemi podržavaju različite protokole koji mogu pokrenuti RCE. Za detaljne primere i dalja objašnjenja o ovoj temi, može se konsultovati [ovaj resurs](https://positive.security/blog/url-open-rce#windows-10-19042), koji uključuje primere Windows protokola sposobnih za iskorišćavanje ove ranjivosti. -Na macOS-u, funkcija `openExternal` može biti iskorišćena za izvršavanje proizvoljnih komandi kao u `shell.openExternal('file:///System/Applications/Calculator.app')`. +U macOS-u, funkcija `openExternal` može biti iskorišćena za izvršavanje proizvoljnih komandi kao u `shell.openExternal('file:///System/Applications/Calculator.app')`. **Primeri Windows protokolskih eksploatacija uključuju:** ```html @@ -224,13 +224,13 @@ window.open( ) ``` -## Čitanje unutrašnjih fajlova: XSS + contextIsolation +## Čitanje internih fajlova: XSS + contextIsolation -**Onemogućavanje `contextIsolation` omogućava korišćenje `` tagova**, sličnih `