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

This commit is contained in:
Translator 2025-01-07 18:44:13 +00:00
parent 3f9493d552
commit 152c68bc0c

View File

@ -97,13 +97,13 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" />
```
### Verkehr erfassen
Ändern Sie die start-main-Konfiguration und fügen Sie die Verwendung eines Proxys hinzu, wie:
Ändern Sie die start-main-Konfiguration und fügen Sie die Verwendung eines Proxys hinzu, wie zum Beispiel:
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
## Electron Local Code Injection
Wenn Sie eine Electron-App lokal ausführen können, ist es möglich, dass Sie sie dazu bringen können, beliebigen JavaScript-Code auszuführen. Überprüfen Sie, wie in:
Wenn Sie eine Electron-App lokal ausführen können, ist es möglich, dass Sie sie dazu bringen können, beliebigen JavaScript-Code auszuführen. Überprüfen Sie, wie:
{{#ref}}
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
@ -111,7 +111,7 @@ Wenn Sie eine Electron-App lokal ausführen können, ist es möglich, dass Sie s
## RCE: XSS + nodeIntegration
Wenn **nodeIntegration** auf **on** gesetzt ist, kann der JavaScript-Code einer Webseite die Node.js-Funktionen einfach durch Aufrufen von `require()` nutzen. Zum Beispiel ist der Weg, die Calc-Anwendung unter Windows auszuführen:
Wenn **nodeIntegration** auf **on** gesetzt ist, kann der JavaScript-Code einer Webseite die Node.js-Funktionen einfach durch Aufrufen von `require()` verwenden. Zum Beispiel ist der Weg, die Calc-Anwendung unter Windows auszuführen:
```html
<script>
require("child_process").exec("calc")
@ -226,7 +226,7 @@ window.open(
```
## Interne Dateien lesen: XSS + contextIsolation
**Deaktivierung von `contextIsolation` ermöglicht die Verwendung von `<webview>`-Tags**, ähnlich wie `<iframe>`, zum Lesen und Exfiltrieren lokaler Dateien. Ein bereitgestelltes Beispiel zeigt, wie man diese Schwachstelle ausnutzt, um den Inhalt interner Dateien zu lesen:
**Das Deaktivieren von `contextIsolation` ermöglicht die Verwendung von `<webview>`-Tags**, ähnlich wie `<iframe>`, zum Lesen und Exfiltrieren lokaler Dateien. Ein bereitgestelltes Beispiel zeigt, wie man diese Schwachstelle ausnutzt, um den Inhalt interner Dateien zu lesen:
![](<../../../images/1 u1jdRYuWAEVwJmf_F2ttJg (1).png>)
@ -255,7 +255,7 @@ Ein Beispiel finden Sie in diesem **Bericht**: [https://blog.electrovolt.io/post
Angenommen, Sie haben ein XSS gefunden, aber Sie **können RCE nicht auslösen oder interne Dateien stehlen**, könnten Sie versuchen, es zu **nutzen, um Anmeldeinformationen über Phishing zu stehlen**.
Zunächst müssen Sie wissen, was passiert, wenn Sie versuchen, eine neue URL zu öffnen, indem Sie den JS-Code im Frontend überprüfen:
Zunächst müssen Sie wissen, was passiert, wenn Sie versuchen, eine neue URL zu öffnen, indem Sie den JS-Code im Front-End überprüfen:
```javascript
webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below)
webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below)
@ -270,7 +270,7 @@ window.open("<http://subdomainagoogleq.com/index.html>")
```
## Remote-Modul
Das Electron Remote-Modul ermöglicht **Renderer-Prozessen den Zugriff auf APIs des Hauptprozesses**, was die Kommunikation innerhalb einer Electron-Anwendung erleichtert. Das Aktivieren dieses Moduls bringt jedoch erhebliche Sicherheitsrisiken mit sich. Es erweitert die Angriffsfläche der Anwendung und macht sie anfälliger für Schwachstellen wie Cross-Site-Scripting (XSS)-Angriffe.
Das Electron Remote-Modul ermöglicht es **Renderer-Prozessen, auf APIs des Hauptprozesses zuzugreifen**, was die Kommunikation innerhalb einer Electron-Anwendung erleichtert. Das Aktivieren dieses Moduls bringt jedoch erhebliche Sicherheitsrisiken mit sich. Es erweitert die Angriffsfläche der Anwendung und macht sie anfälliger für Schwachstellen wie Cross-Site-Scripting (XSS)-Angriffe.
> [!TIP]
> Obwohl das **remote**-Modul einige APIs vom Haupt- zu den Renderer-Prozessen exponiert, ist es nicht einfach, RCE nur durch den Missbrauch der Komponenten zu erhalten. Die Komponenten könnten jedoch sensible Informationen offenlegen.
@ -278,7 +278,7 @@ Das Electron Remote-Modul ermöglicht **Renderer-Prozessen den Zugriff auf APIs
> [!WARNING]
> Viele Apps, die das Remote-Modul weiterhin verwenden, tun dies auf eine Weise, die **NodeIntegration im Renderer-Prozess erfordert**, was ein **großes Sicherheitsrisiko** darstellt.
Seit Electron 14 könnte das `remote`-Modul von Electron aus mehreren Gründen, die mit Sicherheit und Leistung zusammenhängen, aktiviert werden; es wird **empfohlen, es nicht zu verwenden**.
Seit Electron 14 könnte das `remote`-Modul von Electron aus mehreren Gründen, die mit Sicherheit und Leistung zusammenhängen, **nicht verwendet werden**.
Um es zu aktivieren, muss es zuerst **im Hauptprozess aktiviert werden**:
```javascript
@ -302,15 +302,15 @@ Der **[Blogbeitrag](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.ht
- **`app.setAppLogsPath([path])`**
- **Definiert** oder **erstellt** ein Verzeichnis zum Speichern von **App-Protokollen**. Die Protokolle können mit **`app.getPath()`** oder **`app.setPath(pathName, newPath)`** **abgerufen** oder **modifiziert** werden.
- **`app.setAsDefaultProtocolClient(protocol[, path, args])`**
- **Registriert** die aktuelle ausführbare Datei als den **Standard-Handler** für ein bestimmtes **Protokoll**. Sie können bei Bedarf einen **benutzerdefinierten Pfad** und **Argumente** angeben.
- **Registriert** die aktuelle ausführbare Datei als **Standard-Handler** für ein bestimmtes **Protokoll**. Sie können bei Bedarf einen **benutzerdefinierten Pfad** und **Argumente** angeben.
- **`app.setUserTasks(tasks)`**
- **Fügt** Aufgaben zur **Aufgabenkategorie** in der **Jump List** (unter Windows) hinzu. Jede Aufgabe kann steuern, wie die App **gestart** wird oder welche **Argumente** übergeben werden.
- **Fügt** Aufgaben zur **Aufgabenkategorie** in der **Sprungliste** (unter Windows) hinzu. Jede Aufgabe kann steuern, wie die App **gestart** wird oder welche **Argumente** übergeben werden.
- **`app.importCertificate(options, callback)`**
- **Importiert** ein **PKCS#12-Zertifikat** in den **Zertifikatspeicher** des Systems (nur Linux). Ein **Callback** kann verwendet werden, um das Ergebnis zu verarbeiten.
- **`app.moveToApplicationsFolder([options])`**
- **Verschiebt** die Anwendung in den **Anwendungsordner** (unter macOS). Hilft, eine **Standardinstallation** für Mac-Benutzer sicherzustellen.
- **`app.setJumpList(categories)`**
- **Setzt** oder **entfernt** eine **benutzerdefinierte Jump List** unter **Windows**. Sie können **Kategorien** angeben, um zu organisieren, wie Aufgaben dem Benutzer angezeigt werden.
- **Setzt** oder **entfernt** eine **benutzerdefinierte Sprungliste** unter **Windows**. Sie können **Kategorien** angeben, um zu organisieren, wie Aufgaben dem Benutzer angezeigt werden.
- **`app.setLoginItemSettings(settings)`**
- **Konfiguriert**, welche **ausführbaren Dateien** beim **Login** zusammen mit ihren **Optionen** (nur macOS und Windows) gestartet werden.
```javascript
@ -342,9 +342,9 @@ console.log('Recent Places:', recentPlaces);
### **getUserDefault / setUserDefault**
* **Schnittstelle** zu **NSUserDefaults**, die **Anwendungs-** oder **globale** Einstellungen auf macOS speichert.
* **Schnittstelle** mit **NSUserDefaults**, die **Anwendungs-** oder **globale** Einstellungen auf macOS speichert.
* **getUserDefault** kann **sensible Informationen** abrufen, wie z.B. **Standorte kürzlich verwendeter Dateien** oder **geografische Standorte des Benutzers**.
* **getUserDefault** kann **sensible Informationen** abrufen, wie **Standorte kürzlich verwendeter Dateien** oder **geografische Standorte des Benutzers**.
* **setUserDefault** kann diese Einstellungen **ändern**, was möglicherweise die **Konfiguration** einer App beeinflusst.
@ -356,9 +356,21 @@ Diese Funktion zeigt die angegebene Datei in einem Dateimanager an, was **die Da
Für weitere Informationen siehe [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
## Content Security Policy
Electron-Apps sollten eine **Content Security Policy (CSP)** haben, um **XSS-Angriffe** zu **verhindern**. Die **CSP** ist ein **Sicherheitsstandard**, der hilft, die **Ausführung** von **nicht vertrauenswürdigem Code** im Browser zu **verhindern**.
Sie wird normalerweise in der **`main.js`**-Datei oder in der **`index.html`**-Vorlage mit der CSP innerhalb eines **meta-Tags** **konfiguriert**.
Für weitere Informationen siehe:
{{#ref}}
pentesting-web/content-security-policy-csp-bypass/
{{#endref}}
## **Tools**
- [**Electronegativity**](https://github.com/doyensec/electronegativity) ist ein Tool zur Identifizierung von Fehlkonfigurationen und Sicherheitsantipatterns in Electron-basierten Anwendungen.
- [**Electronegativity**](https://github.com/doyensec/electronegativity) ist ein Tool zur Identifizierung von Fehlkonfigurationen und Sicherheits-Anti-Patterns in Electron-basierten Anwendungen.
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) ist ein Open-Source-VS-Code-Plugin für Electron-Anwendungen, das Electronegativity verwendet.
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) zur Überprüfung auf anfällige Drittanbieterbibliotheken
- [**Electro.ng**](https://electro.ng/): Sie müssen es kaufen