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 e7a918414..2bd63bd41 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 @@ -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