mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/electron-des
This commit is contained in:
parent
afcc34c2a5
commit
dfd4d0215d
@ -36,7 +36,7 @@ Les paramètres du **renderer process** peuvent être **configurés** dans le **
|
|||||||
|
|
||||||
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 les API Node bien qu'elle puisse être configurée 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.
|
- **`nodeIntegration`** - est `off` par défaut. S'il est activé, permet d'accéder aux fonctionnalités de 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.
|
- **`contextIsolation`** - est `on` par défaut. S'il est désactivé, les processus principal et renderer ne sont pas isolés.
|
||||||
- **`preload`** - vide par défaut.
|
- **`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 désactivé par défaut. Cela restreindra les actions que NodeJS peut effectuer.
|
||||||
@ -71,7 +71,7 @@ spellcheck: true,
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Quelques **RCE payloads** de [ici](https://7as.es/electron/nodeIntegration_rce.txt) :
|
Quelques **payloads RCE** de [ici](https://7as.es/electron/nodeIntegration_rce.txt) :
|
||||||
```html
|
```html
|
||||||
Example Payloads (Windows):
|
Example Payloads (Windows):
|
||||||
<img
|
<img
|
||||||
@ -111,7 +111,7 @@ Si vous pouvez exécuter localement une application Electron, il est possible qu
|
|||||||
|
|
||||||
## RCE : XSS + nodeIntegration
|
## RCE : XSS + nodeIntegration
|
||||||
|
|
||||||
Si le **nodeIntegration** est activé, 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 :
|
Si le **nodeIntegration** est réglé 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 :
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
require("child_process").exec("calc")
|
require("child_process").exec("calc")
|
||||||
@ -152,7 +152,7 @@ runCalc()
|
|||||||
|
|
||||||
## RCE : XSS + contextIsolation
|
## RCE : XSS + contextIsolation
|
||||||
|
|
||||||
Le _**contextIsolation**_ introduit les **contextes séparés entre les scripts de la page web et le code interne JavaScript d'Electron** afin que l'exécution JavaScript de chaque code n'affecte pas l'autre. C'est une fonctionnalité nécessaire pour éliminer la possibilité de RCE.
|
Le _**contextIsolation**_ introduit les **contextes séparés entre les scripts de la page web et le code interne JavaScript d'Electron**, de sorte que l'exécution JavaScript de chaque code n'affecte pas l'autre. C'est une fonctionnalité nécessaire pour éliminer la possibilité de RCE.
|
||||||
|
|
||||||
Si les contextes ne sont pas isolés, un attaquant peut :
|
Si les contextes ne sont pas isolés, un attaquant peut :
|
||||||
|
|
||||||
@ -273,12 +273,12 @@ window.open("<http://subdomainagoogleq.com/index.html>")
|
|||||||
Le module distant d'Electron permet aux **processus de rendu d'accéder aux API du processus principal**, facilitant la communication au sein d'une application Electron. Cependant, l'activation de ce module introduit des risques de sécurité significatifs. Il élargit la surface d'attaque de l'application, la rendant plus susceptible aux vulnérabilités telles que les attaques par script intersite (XSS).
|
Le module distant d'Electron permet aux **processus de rendu d'accéder aux API du processus principal**, facilitant la communication au sein d'une application Electron. Cependant, l'activation de ce module introduit des risques de sécurité significatifs. Il élargit la surface d'attaque de l'application, la rendant plus susceptible aux vulnérabilités telles que les attaques par script intersite (XSS).
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> Bien que le module **distant** expose certaines API du principal aux processus de rendu, il n'est pas simple d'obtenir un RCE uniquement en abusant des composants. Cependant, les composants peuvent exposer des informations sensibles.
|
> Bien que le module **remote** expose certaines API du principal aux processus de rendu, il n'est pas simple d'obtenir un RCE uniquement en abusant des composants. Cependant, les composants peuvent exposer des informations sensibles.
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> De nombreuses applications qui utilisent encore le module distant le font d'une manière qui **nécessite l'activation de NodeIntegration** dans le processus de rendu, ce qui représente un **énorme risque de sécurité**.
|
> De nombreuses applications qui utilisent encore le module distant le font d'une manière qui **requiert que NodeIntegration soit activé** dans le processus de rendu, ce qui représente un **énorme risque de sécurité**.
|
||||||
|
|
||||||
Depuis Electron 14, le module `distant` d'Electron peut être activé en plusieurs étapes en raison de raisons de sécurité et de performance, il est donc **recommandé de ne pas l'utiliser**.
|
Depuis Electron 14, le module `remote` d'Electron peut être activé en plusieurs étapes en raison de raisons de sécurité et de performance, il est **recommandé de ne pas l'utiliser**.
|
||||||
|
|
||||||
Pour l'activer, il faut d'abord **l'activer dans le processus principal** :
|
Pour l'activer, il faut d'abord **l'activer dans le processus principal** :
|
||||||
```javascript
|
```javascript
|
||||||
@ -336,13 +336,13 @@ console.log('Recent Places:', recentPlaces);
|
|||||||
```
|
```
|
||||||
### **subscribeNotification / subscribeWorkspaceNotification**
|
### **subscribeNotification / subscribeWorkspaceNotification**
|
||||||
|
|
||||||
* **Écoute** les **notifications macOS natives** en utilisant NSDistributedNotificationCenter.
|
* **Écoute** les **notifications natives macOS** en utilisant NSDistributedNotificationCenter.
|
||||||
* Avant **macOS Catalina**, vous pouviez intercepter **toutes** les notifications distribuées en passant **nil** à CFNotificationCenterAddObserver.
|
* Avant **macOS Catalina**, vous pouviez intercepter **toutes** les notifications distribuées en passant **nil** à CFNotificationCenterAddObserver.
|
||||||
* Après **Catalina / Big Sur**, les applications en bac à sable peuvent toujours **s'abonner** à **de nombreux événements** (par exemple, **verrouillages/déverrouillages d'écran**, **montages de volume**, **activité réseau**, etc.) en enregistrant des notifications **par nom**.
|
* Après **Catalina / Big Sur**, les applications en bac à sable peuvent toujours **s'abonner** à **de nombreux événements** (par exemple, **verrouillages/déverrouillages d'écran**, **montages de volume**, **activité réseau**, etc.) en enregistrant des notifications **par nom**.
|
||||||
|
|
||||||
### **getUserDefault / setUserDefault**
|
### **getUserDefault / setUserDefault**
|
||||||
|
|
||||||
* **Interagit** avec **NSUserDefaults**, qui stocke les **préférences** d'**application** ou **globales** sur macOS.
|
* **Interagit** avec **NSUserDefaults**, qui stocke les **préférences** d'application ou **globales** sur macOS.
|
||||||
|
|
||||||
* **getUserDefault** peut **récupérer** des informations sensibles, telles que **les emplacements de fichiers récents** ou **la localisation géographique de l'utilisateur**.
|
* **getUserDefault** peut **récupérer** des informations sensibles, telles que **les emplacements de fichiers récents** ou **la localisation géographique de l'utilisateur**.
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user