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
dbb0551526
commit
8f4449ce21
@ -103,7 +103,7 @@ Modifique a configuração start-main e adicione o uso de um proxy como:
|
||||
```
|
||||
## Injeção de Código Local do Electron
|
||||
|
||||
Se você puder executar localmente um aplicativo Electron, é possível que você consiga fazer com que ele execute código javascript arbitrário. Confira como em:
|
||||
Se você puder executar localmente um aplicativo Electron, é possível que você consiga fazer com que ele execute código JavaScript arbitrário. Confira como em:
|
||||
|
||||
{{#ref}}
|
||||
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
|
||||
@ -192,7 +192,7 @@ Quando um usuário interage com links ou abre novas janelas, ouvintes de eventos
|
||||
webContents.on("new-window", function (event, url, disposition, options) {}
|
||||
webContents.on("will-navigate", function (event, url) {}
|
||||
```
|
||||
Esses listeners são **substituídos pelo aplicativo de desktop** para implementar sua própria **lógica de negócios**. O aplicativo avalia se um link navegável deve ser aberto internamente ou em um navegador da web externo. Essa decisão é geralmente tomada por meio de uma função, `openInternally`. Se essa função retornar `false`, isso indica que o link deve ser aberto externamente, utilizando a função `shell.openExternal`.
|
||||
Esses listeners são **substituídos pelo aplicativo de desktop** para implementar sua própria **lógica de negócios**. O aplicativo avalia se um link navegável deve ser aberto internamente ou em um navegador da web externo. Essa decisão é tipicamente tomada através de uma função, `openInternally`. Se essa função retornar `false`, isso indica que o link deve ser aberto externamente, utilizando a função `shell.openExternal`.
|
||||
|
||||
**Aqui está um pseudocódigo simplificado:**
|
||||
|
||||
@ -202,7 +202,7 @@ Esses listeners são **substituídos pelo aplicativo de desktop** para implement
|
||||
|
||||
As melhores práticas de segurança do Electron JS desaconselham aceitar conteúdo não confiável com a função `openExternal`, pois isso pode levar a RCE através de vários protocolos. Sistemas operacionais suportam diferentes protocolos que podem acionar RCE. Para exemplos detalhados e mais explicações sobre este tópico, pode-se consultar [este recurso](https://positive.security/blog/url-open-rce#windows-10-19042), que inclui exemplos de protocolos do Windows capazes de explorar essa vulnerabilidade.
|
||||
|
||||
No macos, a função `openExternal` pode ser explorada para executar comandos arbitrários, como em `shell.openExternal('file:///System/Applications/Calculator.app')`.
|
||||
No macos, a função `openExternal` pode ser explorada para executar comandos arbitrários como em `shell.openExternal('file:///System/Applications/Calculator.app')`.
|
||||
|
||||
**Exemplos de exploits de protocolos do Windows incluem:**
|
||||
```html
|
||||
@ -337,7 +337,7 @@ console.log('Recent Places:', recentPlaces);
|
||||
### **subscribeNotification / subscribeWorkspaceNotification**
|
||||
|
||||
* **Escuta** por **notificações nativas do macOS** usando NSDistributedNotificationCenter.
|
||||
* Antes do **macOS Catalina**, você poderia interceptar **todas** as notificações distribuídas passando **nil** para CFNotificationCenterAddObserver.
|
||||
* Antes do **macOS Catalina**, você podia capturar **todas** as notificações distribuídas passando **nil** para CFNotificationCenterAddObserver.
|
||||
* Após **Catalina / Big Sur**, aplicativos em sandbox ainda podem **se inscrever** em **muitos eventos** (por exemplo, **bloqueios/desbloqueios de tela**, **montagens de volume**, **atividade de rede**, etc.) registrando notificações **pelo nome**.
|
||||
|
||||
### **getUserDefault / setUserDefault**
|
||||
@ -356,6 +356,18 @@ Esta função mostra o arquivo dado em um gerenciador de arquivos, que **pode ex
|
||||
|
||||
Para mais informações, consulte [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
|
||||
|
||||
Aplicativos Electron devem ter uma **Content Security Policy (CSP)** para **prevenir ataques XSS**. A **CSP** é um **padrão de segurança** que ajuda a **prevenir** a **execução** de **código não confiável** no navegador.
|
||||
|
||||
Geralmente é **configurada** no arquivo **`main.js`** ou no template **`index.html`** com a CSP dentro de uma **meta tag**.
|
||||
|
||||
Para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
pentesting-web/content-security-policy-csp-bypass/
|
||||
{{#endref}}
|
||||
|
||||
## **Tools**
|
||||
|
||||
- [**Electronegativity**](https://github.com/doyensec/electronegativity) é uma ferramenta para identificar configurações incorretas e padrões de segurança em aplicações baseadas em Electron.
|
||||
@ -367,7 +379,7 @@ Para mais informações, consulte [https://blog.doyensec.com/2021/02/16/electron
|
||||
|
||||
Em [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s) você pode encontrar um laboratório para explorar aplicativos Electron vulneráveis.
|
||||
|
||||
Alguns comandos que irão te ajudar no laboratório:
|
||||
Alguns comandos que irão ajudá-lo no laboratório:
|
||||
```bash
|
||||
# Download apps from these URls
|
||||
# Vuln to nodeIntegration
|
||||
|
Loading…
x
Reference in New Issue
Block a user