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
f2be8f2bf0
commit
cc64acd4f6
@ -1,4 +1,4 @@
|
||||
# Aplicaciones de Escritorio Electron
|
||||
# Electron Desktop Apps
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@ -32,7 +32,7 @@ let win = new BrowserWindow()
|
||||
//Open Renderer Process
|
||||
win.loadURL(`file://path/to/index.html`)
|
||||
```
|
||||
Los ajustes del **proceso de renderizado** se pueden **configurar** en el **proceso principal** dentro del archivo main.js. Algunas de las configuraciones **prevenirán que la aplicación Electron obtenga RCE** u otras vulnerabilidades si los **ajustes están correctamente configurados**.
|
||||
La configuración del **proceso de renderizado** se puede **configurar** en el **proceso principal** dentro del archivo main.js. Algunas de las configuraciones **prevenirán que la aplicación Electron obtenga RCE** u otras vulnerabilidades si las **configuraciones están correctamente establecidas**.
|
||||
|
||||
La aplicación Electron **podría acceder al dispositivo** a través de las APIs de Node, aunque se puede configurar para prevenirlo:
|
||||
|
||||
@ -95,9 +95,9 @@ onerror="alert(require('child_process').execSync('ls -l').toString());" />
|
||||
src="x"
|
||||
onerror="alert(require('child_process').execSync('uname -a').toString());" />
|
||||
```
|
||||
### Capturar tráfico
|
||||
### Captura de tráfico
|
||||
|
||||
Modifique la configuración de start-main y agregue el uso de un proxy como:
|
||||
Modifica la configuración de start-main y añade el uso de un proxy como:
|
||||
```javascript
|
||||
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
|
||||
```
|
||||
@ -156,9 +156,9 @@ El _**contextIsolation**_ introduce **contextos separados entre los scripts de l
|
||||
|
||||
Si los contextos no están aislados, un atacante puede:
|
||||
|
||||
1. Ejecutar **JavaScript arbitrario en el renderizador** (XSS o navegación a sitios externos)
|
||||
2. **Sobrescribir el método incorporado** que se utiliza en el preload o en el código interno de Electron a una función propia
|
||||
3. **Activar** el uso de la **función sobrescrita**
|
||||
1. Ejecutar **JavaScript arbitrario en el renderer** (XSS o navegación a sitios externos)
|
||||
2. **Sobrescribir el método incorporado** que se utiliza en el preload o en el código interno de Electron para su propia función
|
||||
3. **Activar** el uso de **la función sobrescrita**
|
||||
4. ¿RCE?
|
||||
|
||||
Hay 2 lugares donde los métodos incorporados pueden ser sobrescritos: En el código de preload o en el código interno de Electron:
|
||||
@ -177,7 +177,7 @@ electron-contextisolation-rce-via-ipc.md
|
||||
|
||||
### Bypass del evento de clic
|
||||
|
||||
Si hay restricciones aplicadas al hacer clic en un enlace, es posible que puedas eludirlas **haciendo un clic medio** en lugar de un clic izquierdo regular.
|
||||
Si hay restricciones aplicadas al hacer clic en un enlace, es posible que puedas eludirlas **haciendo un clic medio** en lugar de un clic izquierdo normal.
|
||||
```javascript
|
||||
window.addEventListener('click', (e) => {
|
||||
```
|
||||
@ -278,7 +278,7 @@ El módulo remoto de Electron permite que **los procesos de renderizado accedan
|
||||
> [!WARNING]
|
||||
> Muchas aplicaciones que aún utilizan el módulo remoto lo hacen de una manera que **requiere que NodeIntegration esté habilitado** en el proceso de renderizado, lo cual es un **enorme riesgo de seguridad**.
|
||||
|
||||
Desde Electron 14, el módulo `remote` de Electron podría habilitarse en varios pasos debido a razones de seguridad y rendimiento, por lo que se **recomienda no usarlo**.
|
||||
Desde Electron 14, el módulo `remote` de Electron podría habilitarse en varios pasos debido a razones de seguridad y rendimiento, es **recomendado no usarlo**.
|
||||
|
||||
Para habilitarlo, primero se necesita **habilitarlo en el proceso principal**:
|
||||
```javascript
|
||||
@ -317,11 +317,11 @@ El **[blog post](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
|
||||
Native.app.relaunch({args: [], execPath: "/System/Applications/Calculator.app/Contents/MacOS/Calculator"});
|
||||
Native.app.exit()
|
||||
```
|
||||
## systemPreferences module
|
||||
## module systemPreferences
|
||||
|
||||
La **API principal** para acceder a las preferencias del sistema y **emitir eventos del sistema** en Electron. Métodos como **subscribeNotification**, **subscribeWorkspaceNotification**, **getUserDefault** y **setUserDefault** son todos **parte de** este módulo.
|
||||
|
||||
**Example usage:**
|
||||
**Ejemplo de uso:**
|
||||
```javascript
|
||||
const { systemPreferences } = require('electron');
|
||||
|
||||
@ -342,7 +342,7 @@ console.log('Recent Places:', recentPlaces);
|
||||
|
||||
### **getUserDefault / setUserDefault**
|
||||
|
||||
* **Interfaz** con **NSUserDefaults**, que almacena **preferencias** de **aplicación** o **globales** en macOS.
|
||||
* **Interfaz** con **NSUserDefaults**, que almacena preferencias **de aplicación** o **globales** en macOS.
|
||||
|
||||
* **getUserDefault** puede **recuperar** información sensible, como **ubicaciones de archivos recientes** o **ubicación geográfica del usuario**.
|
||||
|
||||
@ -354,18 +354,30 @@ console.log('Recent Places:', recentPlaces);
|
||||
|
||||
Esta función muestra el archivo dado en un administrador de archivos, lo que **podría ejecutar automáticamente el archivo**.
|
||||
|
||||
Para más información, consulta [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
|
||||
Para más información consulta [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
|
||||
|
||||
Las aplicaciones de Electron deben tener una **Política de Seguridad de Contenido (CSP)** para **prevenir ataques XSS**. La **CSP** es un **estándar de seguridad** que ayuda a **prevenir** la **ejecución** de **código no confiable** en el navegador.
|
||||
|
||||
Generalmente se **configura** en el archivo **`main.js`** o en la plantilla **`index.html`** con la CSP dentro de una **etiqueta meta**.
|
||||
|
||||
Para más información consulta:
|
||||
|
||||
{{#ref}}
|
||||
pentesting-web/content-security-policy-csp-bypass/
|
||||
{{#endref}}
|
||||
|
||||
## **Tools**
|
||||
|
||||
- [**Electronegativity**](https://github.com/doyensec/electronegativity) es una herramienta para identificar configuraciones incorrectas y patrones de seguridad en aplicaciones basadas en Electron.
|
||||
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) es un plugin de código abierto para VS Code para aplicaciones Electron que utiliza Electronegativity.
|
||||
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) es un plugin de código abierto para VS Code para aplicaciones de Electron que utiliza Electronegativity.
|
||||
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) para verificar bibliotecas de terceros vulnerables.
|
||||
- [**Electro.ng**](https://electro.ng/): Necesitas comprarlo.
|
||||
|
||||
## Labs
|
||||
|
||||
En [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s) puedes encontrar un laboratorio para explotar aplicaciones Electron vulnerables.
|
||||
En [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s) puedes encontrar un laboratorio para explotar aplicaciones vulnerables de Electron.
|
||||
|
||||
Algunos comandos que te ayudarán con el laboratorio:
|
||||
```bash
|
||||
|
Loading…
x
Reference in New Issue
Block a user