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 7e672b27b..c1a17fcd7 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
@@ -1,12 +1,12 @@
-# Applications de bureau Electron
+# Electron Desktop Apps
{{#include ../../../banners/hacktricks-training.md}}
## Introduction
-Electron combine un backend local (avec **NodeJS**) et un frontend (**Chromium**), bien qu'il manque certains des mécanismes de sécurité des navigateurs modernes.
+Electron combine un backend local (avec **NodeJS**) et un frontend (**Chromium**), bien qu'il lui manque certains mécanismes de sécurité des navigateurs modernes.
-En général, vous pouvez trouver le code de l'application electron à l'intérieur d'une application `.asar`, afin d'obtenir le code, vous devez l'extraire :
+Généralement, vous trouverez le code de l'application electron dans un fichier `.asar` ; pour obtenir le code, vous devez l'extraire :
```bash
npx asar extract app.asar destfolder #Extract everything
npx asar extract-file app.asar main.js #Extract just a file
@@ -17,14 +17,14 @@ Dans le code source d'une application Electron, à l'intérieur de `packet.json`
"name": "standard-notes",
"main": "./app/index.js",
```
-Electron a 2 types de processus :
+Electron comprend 2 types de processus :
-- Processus Principal (a un accès complet à NodeJS)
-- Processus de Rendu (devrait avoir un accès restreint à NodeJS pour des raisons de sécurité)
+- Main Process (dispose d'un accès complet à NodeJS)
+- Renderer Process (devrait avoir un accès NodeJS restreint pour des raisons de sécurité)
.png>)
-Un **processus de rendu** sera une fenêtre de navigateur chargeant un fichier :
+Un **renderer process** sera une fenêtre de navigateur chargeant un fichier :
```javascript
const { BrowserWindow } = require("electron")
let win = new BrowserWindow()
@@ -32,20 +32,20 @@ let win = new BrowserWindow()
//Open Renderer Process
win.loadURL(`file://path/to/index.html`)
```
-Les paramètres du **renderer process** peuvent être **configurés** dans le **main process** à l'intérieur du fichier main.js. Certaines des configurations **empêcheront l'application Electron d'obtenir RCE** ou d'autres vulnérabilités si les **paramètres sont correctement configurés**.
+Les paramètres du **processus de rendu** peuvent être **configurés** dans le **processus principal** à l'intérieur du fichier main.js. Certaines configurations permettront d'**empêcher l'application Electron d'obtenir une RCE** ou d'autres vulnérabilités si les **paramètres sont correctement configurés**.
-L'application Electron **pourrait accéder à l'appareil** via les API Node bien qu'elle puisse être configurée pour l'en empêcher :
+L'application Electron **pourrait accéder à l'appareil** via Node apis, bien qu'il soit possible de le configurer pour l'en empêcher :
-- **`nodeIntegration`** - est `off` par défaut. S'il est activé, permet d'accéder aux fonctionnalités Node depuis le renderer process.
-- **`contextIsolation`** - est `on` par défaut. S'il est désactivé, les processus principal et renderer ne sont pas isolés.
+- **`nodeIntegration`** - est `off` par défaut. Si `on`, permet d'accéder aux fonctionnalités de Node depuis le processus de rendu.
+- **`contextIsolation`** - est `on` par défaut. Si `off`, les processus principal et de rendu ne sont pas isolés.
- **`preload`** - vide par défaut.
-- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - est désactivé par défaut. Cela restreindra les actions que NodeJS peut effectuer.
+- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - est `off` par défaut. Il restreindra les actions que NodeJS peut effectuer.
- Intégration Node dans les Workers
- **`nodeIntegrationInSubframes`** - est `off` par défaut.
-- Si **`nodeIntegration`** est **activé**, cela permettrait l'utilisation des **API Node.js** dans les pages web qui sont **chargées dans des iframes** au sein d'une application Electron.
-- Si **`nodeIntegration`** est **désactivé**, alors les précharges se chargeront dans l'iframe.
+- Si **`nodeIntegration`** est **activé**, cela permettrait l'utilisation des **Node.js APIs** dans des pages web qui sont **chargées dans des iframes** au sein d'une application Electron.
+- Si **`nodeIntegration`** est **désactivé**, alors les preloads se chargeront dans l'iframe
-Exemple de configuration :
+Exemple de configuration:
```javascript
const mainWindowOptions = {
title: "Discord",
@@ -71,7 +71,7 @@ spellcheck: true,
},
}
```
-Quelques **payloads RCE** provenant de [ici](https://7as.es/electron/nodeIntegration_rce.txt):
+Quelques **RCE payloads** provenant de [here](https://7as.es/electron/nodeIntegration_rce.txt):
```html
Example Payloads (Windows):
src="x"
onerror="alert(require('child_process').execSync('uname -a').toString());" />
```
-### Capture traffic
+### Capturer le trafic
Modifiez la configuration start-main et ajoutez l'utilisation d'un proxy tel que :
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
-## Injection de code local Electron
+## Electron Local Code Injection
+
+Si vous pouvez exécuter localement une Electron App, il est possible que vous puissiez la faire exécuter du code javascript arbitraire. Consultez comment dans :
-Si vous pouvez exécuter localement une application Electron, il est possible que vous puissiez faire exécuter du code javascript arbitraire. Vérifiez comment dans :
{{#ref}}
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
{{#endref}}
-## RCE : XSS + nodeIntegration
+## RCE: XSS + nodeIntegration
-Si le **nodeIntegration** est défini sur **on**, le JavaScript d'une page web peut utiliser facilement les fonctionnalités de Node.js simplement en appelant `require()`. Par exemple, la façon d'exécuter l'application calc sur Windows est :
+If the **nodeIntegration** is set to **on**, a web page's JavaScript can use Node.js features easily just by calling the `require()`. For example, the way to execute the calc application on Windows is:
```html
```
-## RCE: webviewTag + preload IPC vuln + shell.openExternal
+## RCE: webviewTag + vulnerable preload IPC + shell.openExternal
-Cette vulnérabilité peut être trouvée dans **[ce rapport](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**.
+Cette vulnérabilité se trouve dans **[this report](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**.
-Le **webviewTag** est une **fonctionnalité obsolète** qui permet l'utilisation de **NodeJS** dans le **processus de rendu**, ce qui devrait être désactivé car cela permet de charger un script dans le contexte de préchargement comme :
+La **webviewTag** est une **fonctionnalité obsolète** qui permet l'utilisation de **NodeJS** dans le **renderer process**, ce qui devrait être désactivé car cela permet de charger un script dans le preload context comme:
```xml
```
-Par conséquent, un attaquant qui parvient à charger une page arbitraire pourrait utiliser cette balise pour **charger un script de préchargement arbitraire**.
+Ainsi, un attaquant qui parvient à charger une page arbitraire pourrait utiliser cette balise pour **charger un preload script arbitraire**.
-Ce script de préchargement a ensuite été abusé pour appeler un **service IPC vulnérable (`skype-new-window`)** qui appelait **`shell.openExternal`** pour obtenir un RCE :
+Ce preload script a ensuite été abusé pour appeler un **vulnérable IPC service (`skype-new-window`)** qui appelait **`shell.openExternal`** pour obtenir RCE:
```javascript
(async() => {
const { ipcRenderer } = require("electron");
@@ -247,11 +251,11 @@ await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Do
```
## Lecture de fichiers internes : XSS + contextIsolation
-**Désactiver `contextIsolation` permet l'utilisation de balises ``**, similaires à `