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

This commit is contained in:
Translator 2025-01-07 18:27:46 +00:00
parent c080d49d14
commit f2be8f2bf0

View File

@ -1,4 +1,4 @@
# Electron Desktop Apps
# Aplicaciones de Escritorio Electron
{{#include ../../../banners/hacktricks-training.md}}
@ -32,7 +32,7 @@ let win = new BrowserWindow()
//Open Renderer Process
win.loadURL(`file://path/to/index.html`)
```
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**.
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 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());" />
```
### Captura de tráfico
### Capturar tráfico
Modifica la configuración de start-main y añade el uso de un proxy como:
Modifique la configuración de start-main y agregue el uso de un proxy como:
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
@ -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 normal.
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.
```javascript
window.addEventListener('click', (e) => {
```
@ -260,9 +260,9 @@ Primero que nada, necesitas saber qué sucede cuando intentas abrir una nueva UR
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)
```
La llamada a **`openInternally`** decidirá si el **link** se **abrirá** en la **ventana de escritorio** ya que es un enlace que pertenece a la plataforma, **o** si se abrirá en el **navegador como un recurso de 3ra parte**.
La llamada a **`openInternally`** decidirá si el **link** se **abrirá** en la **ventana de escritorio** ya que es un enlace que pertenece a la plataforma, **o** si se abrirá en el **navegador como un recurso de terceros**.
En el caso de que la **regex** utilizada por la función sea **vulnerable a bypasses** (por ejemplo, al **no escapar los puntos de los subdominios**), un atacante podría abusar del XSS para **abrir una nueva ventana que** estará ubicada en la infraestructura del atacante **pidiendo credenciales** al usuario:
En el caso de que la **regex** utilizada por la función sea **vulnerable a bypasses** (por ejemplo, **no escapando los puntos de los subdominios**), un atacante podría abusar del XSS para **abrir una nueva ventana que** estará ubicada en la infraestructura del atacante **pidiendo credenciales** al usuario:
```html
<script>
window.open("<http://subdomainagoogleq.com/index.html>")
@ -270,7 +270,7 @@ window.open("<http://subdomainagoogleq.com/index.html>")
```
## Módulo remoto
El módulo Remote de Electron permite que **los procesos de renderizado accedan a las API del proceso principal**, facilitando la comunicación dentro de una aplicación Electron. Sin embargo, habilitar este módulo introduce riesgos de seguridad significativos. Amplía la superficie de ataque de la aplicación, haciéndola más susceptible a vulnerabilidades como ataques de scripting entre sitios (XSS).
El módulo remoto de Electron permite que **los procesos de renderizado accedan a las API del proceso principal**, facilitando la comunicación dentro de una aplicación Electron. Sin embargo, habilitar este módulo introduce riesgos de seguridad significativos. Amplía la superficie de ataque de la aplicación, haciéndola más susceptible a vulnerabilidades como ataques de scripting entre sitios (XSS).
> [!TIP]
> Aunque el módulo **remote** expone algunas API del proceso principal a los procesos de renderizado, no es sencillo obtener RCE solo abusando de los componentes. Sin embargo, los componentes pueden exponer información sensible.
@ -278,7 +278,7 @@ El módulo Remote 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 puede ser habilitado en varios pasos, ya que por razones de seguridad y rendimiento 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, por lo que se **recomienda no usarlo**.
Para habilitarlo, primero se necesita **habilitarlo en el proceso principal**:
```javascript
@ -312,16 +312,16 @@ El **[blog post](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
- **`app.setJumpList(categories)`**
- **Establece** o **elimina** una **Jump List personalizada** en **Windows**. Puedes especificar **categorías** para organizar cómo aparecen las tareas al usuario.
- **`app.setLoginItemSettings(settings)`**
- **Configura** qué **ejecutables** se inician al **iniciar sesión** junto con sus **opciones** (solo macOS y Windows).
- **Configura** qué **ejecutables** se lanzan al **iniciar sesión** junto con sus **opciones** (solo macOS y Windows).
```javascript
Native.app.relaunch({args: [], execPath: "/System/Applications/Calculator.app/Contents/MacOS/Calculator"});
Native.app.exit()
```
## module systemPreferences
## systemPreferences module
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.
**Ejemplo de uso:**
**Example usage:**
```javascript
const { systemPreferences } = require('electron');