Translated ['src/network-services-pentesting/pentesting-web/electron-des

This commit is contained in:
Translator 2025-01-07 18:27:49 +00:00
parent 16796b4e40
commit 40bfee4520

View File

@ -20,11 +20,11 @@ In die bronkode van 'n Electron-app, binne `packet.json`, kan jy die `main.js`-l
Electron het 2 prosestipes:
- Hoofproses (het volledige toegang tot NodeJS)
- Rendererproses (moet beperkte toegang tot NodeJS hê om veiligheidsredes)
- Renderer-proses (moet beperkte toegang tot NodeJS hê om veiligheidsredes)
![](<../../../images/image (182).png>)
'n **rendererproses** sal 'n blaaiervenster wees wat 'n lêer laai:
'n **renderer-proses** sal 'n blaaiervenster wees wat 'n lêer laai:
```javascript
const { BrowserWindow } = require("electron")
let win = new BrowserWindow()
@ -32,12 +32,12 @@ let win = new BrowserWindow()
//Open Renderer Process
win.loadURL(`file://path/to/index.html`)
```
Instellings van die **renderer-proses** kan **gekonfigureer** word in die **hoofproses** binne die main.js-lêer. Sommige van die konfigurasies sal **voorkom dat die Electron-toepassing RCE kry** of ander kwesbaarhede as die **instellings korrek geconfigureer is**.
Die instellings van die **renderer-proses** kan **gekonfigureer** word in die **hoofproses** binne die main.js-lêer. Sommige van die konfigurasies sal **voorkom dat die Electron-toepassing RCE** of ander kwesbaarhede kry as die **instellings korrek geconfigureer** is.
Die electron-toepassing **kan toegang tot die toestel verkry** via Node-apis alhoewel dit geconfigureer kan word om dit te voorkom:
Die electron-toepassing **kan toegang tot die toestel** verkry via Node-apis alhoewel dit geconfigureer kan word om dit te voorkom:
- **`nodeIntegration`** - is `af` per standaard. As aan, laat dit toe om toegang te verkry tot node-funksies vanaf die renderer-proses.
- **`contextIsolation`** - is `aan` per standaard. As af, is hoof- en renderer-prosesse nie geïsoleer nie.
- **`nodeIntegration`** - is `af` per standaard. As dit aan is, laat dit toe om toegang te verkry tot node-funksies vanaf die renderer-proses.
- **`contextIsolation`** - is `aan` per standaard. As dit af is, is hoof- en renderer-prosesse nie geïsoleer nie.
- **`preload`** - leeg per standaard.
- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - is af per standaard. Dit sal die aksies wat NodeJS kan uitvoer beperk.
- Node Integrasie in Werkers
@ -101,7 +101,7 @@ Wysig die start-main konfigurasie en voeg die gebruik van 'n proxy soos by:
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
## Electron Plaaslike Kode-inspuiting
## Electron Plaaslike Kode Inspuiting
As jy 'n Electron App plaaslik kan uitvoer, is dit moontlik dat jy dit kan laat uitvoer willekeurige javascript kode. Kyk hoe in:
@ -123,7 +123,7 @@ top.require("child_process").exec("open /System/Applications/Calculator.app")
## RCE: preload
Die skrip wat in hierdie instelling aangedui word, is l**oaded voor ander skripte in die renderer**, so dit het **onbeperkte toegang tot Node APIs**:
Die skrip wat in hierdie instelling aangedui word, is l**aad voor ander skripte in die renderer**, so dit het **onbeperkte toegang tot Node APIs**:
```javascript
new BrowserWindow{
webPreferences: {
@ -177,13 +177,13 @@ electron-contextisolation-rce-via-ipc.md
### Bypass klik gebeurtenis
As daar beperkings toegepas word wanneer jy op 'n skakel klik, mag jy in staat wees om dit te omseil **deur 'n middelklik** in plaas van 'n gewone linkerklik
As daar beperkings toegepas word wanneer jy op 'n skakel klik, kan jy dalk hulle omseil **deur 'n middelklik** te doen in plaas van 'n gewone linkerklik
```javascript
window.addEventListener('click', (e) => {
```
## RCE via shell.openExternal
Vir meer inligting oor hierdie voorbeelde, kyk na [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) en [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/)
Vir meer inligting oor hierdie voorbeelde, kyk [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) en [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/)
Wanneer 'n Electron-desktoptoepassing ontplooi word, is dit van kardinale belang om die korrekte instellings vir `nodeIntegration` en `contextIsolation` te verseker. Dit is gevestig dat **kliënt-kant afstandkode-uitvoering (RCE)** wat op preload-skripte of Electron se inheemse kode van die hoofproses teiken, effektief voorkom word met hierdie instellings in plek.
@ -270,7 +270,7 @@ window.open("<http://subdomainagoogleq.com/index.html>")
```
## Remote module
Die Electron Remote module laat **renderer prosesse toegang tot hoof proses API's** toe, wat kommunikasie binne 'n Electron-toepassing vergemaklik. Dit stel egter beduidende sekuriteitsrisiko's in. Dit vergroot die toepassing se aanvaloppervlak, wat dit meer kwesbaar maak vir kwesbaarhede soos cross-site scripting (XSS) aanvalle.
Die Electron Remote module laat **renderer prosesse toegang tot hoof proses API's** toe, wat kommunikasie binne 'n Electron toepassing vergemaklik. Dit stel egter beduidende sekuriteitsrisiko's in. Dit vergroot die toepassing se aanvaloppervlak, wat dit meer kwesbaar maak vir kwesbaarhede soos cross-site scripting (XSS) aanvalle.
> [!TIP]
> Alhoewel die **remote** module 'n paar API's van hoof na renderer prosesse blootstel, is dit nie reguit om RCE te verkry net deur die komponente te misbruik nie. Die komponente mag egter sensitiewe inligting blootstel.
@ -302,11 +302,11 @@ Die **[blog pos](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
- **`app.setAppLogsPath([path])`**
- **Definieer** of **skep** 'n gids vir die stoor van **toepassing logs**. Die logs kan **herwin** of **gewysig** word met behulp van **`app.getPath()`** of **`app.setPath(pathName, newPath)`**.
- **`app.setAsDefaultProtocolClient(protocol[, path, args])`**
- **Registreer** die huidige uitvoerbare as die **standaardhandler** vir 'n spesifieke **protokol**. Jy kan 'n **aangepaste pad** en **argumente** verskaf indien nodig.
- **Registreer** die huidige uitvoerbare as die **standaardhandler** vir 'n gespesifiseerde **protokol**. Jy kan 'n **aangepaste pad** en **argumente** verskaf indien nodig.
- **`app.setUserTasks(tasks)`**
- **Voeg** take by die **Take kategorie** in die **Jump List** (op Windows). Elke taak kan beheer hoe die toepassing **begin** of watter **argumente** oorgedra word.
- **`app.importCertificate(options, callback)`**
- **Importeer** 'n **PKCS#12 sertifikaat** in die stelsel se **sertifikaatwinkel** (slegs Linux). 'n **callback** kan gebruik word om die resultaat te hanteer.
- **Importeer** 'n **PKCS#12 sertifikaat** in die stelsel se **sertifikaatwinkel** (slegs Linux). 'n **Terugroep** kan gebruik word om die resultaat te hanteer.
- **`app.moveToApplicationsFolder([options])`**
- **Verskuif** die toepassing na die **Toepassingsgids** (op macOS). Help om 'n **standaard installasie** vir Mac-gebruikers te verseker.
- **`app.setJumpList(categories)`**
@ -338,7 +338,7 @@ console.log('Recent Places:', recentPlaces);
* **Luister** na **natuurlike macOS kennisgewings** met behulp van NSDistributedNotificationCenter.
* Voor **macOS Catalina** kon jy **alle** verspreide kennisgewings afluister deur **nil** aan CFNotificationCenterAddObserver te gee.
* Na **Catalina / Big Sur** kan gesandboxde toepassings steeds **subskribere** op **baie gebeurtenisse** (byvoorbeeld, **skerm vergrendeling/ontgrendeling**, **volume monteer**, **netwerkaktiwiteit**, ens.) deur kennisgewings **per naam** te registreer.
* Na **Catalina / Big Sur** kan gesandboksde programme steeds **subskribere** op **baie gebeurtenisse** (byvoorbeeld, **skerm sluit/ontsluit**, **volume monteer**, **netwerkaktiwiteit**, ens.) deur kennisgewings **per naam** te registreer.
### **getUserDefault / setUserDefault**
@ -346,7 +346,7 @@ console.log('Recent Places:', recentPlaces);
* **getUserDefault** kan **sensitiewe** inligting terugkry, soos **onlangs lêer plekke** of **gebruiker se geografiese ligging**.
* **setUserDefault** kan **wysig** hierdie voorkeure, wat moontlik 'n toepassing se **konfigurasie** kan beïnvloed.
* **setUserDefault** kan **wysig** hierdie voorkeure, wat moontlik 'n app se **konfigurasie** kan beïnvloed.
* In **ou Electron weergawes** (voor v8.3.0), was slegs die **standaard suite** van NSUserDefaults **toeganklik**.
@ -365,7 +365,7 @@ Vir meer inligting, kyk na [https://blog.doyensec.com/2021/02/16/electron-apis-m
## Labs
In [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s) kan jy 'n laboratorium vind om kwesbare Electron-toepassings te benut.
In [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s) kan jy 'n laboratorium vind om kwesbare Electron-apps te benut.
Sommige opdragte wat jou sal help met die laboratorium:
```bash