<summary><strong>Aprenda hacking AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
[A partir da documentação](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Quando iniciado com o interruptor `--inspect`, um processo Node.js escuta por um cliente de depuração. Por **padrão**, ele escutará no host e porta **`127.0.0.1:9229`**. Cada processo também é atribuído um **UUID****único**.
Os clientes do inspector devem conhecer e especificar o endereço do host, a porta e o UUID para se conectar. Uma URL completa terá a aparência de `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
Uma vez que o **depurador tem acesso total ao ambiente de execução do Node.js**, um ator malicioso capaz de se conectar a esta porta pode ser capaz de executar código arbitrário em nome do processo Node.js (**possível escalonamento de privilégios**).
Processos baseados em **CEF** (**Chromium Embedded Framework**) como precisam usar o parâmetro: `--remote-debugging-port=9222` para abrir o **depurador** (as proteções SSRF permanecem muito semelhantes). No entanto, em vez de conceder uma sessão de **depuração****NodeJS**, eles vão se comunicar com o navegador usando o [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), que é uma interface para controlar o navegador, mas não há um RCE direto.
### Navegadores, WebSockets e política de mesma origem <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a>
Websites abertos em um navegador da web podem fazer solicitações WebSocket e HTTP sob o modelo de segurança do navegador. Uma **conexão HTTP inicial** é necessária para **obter um ID de sessão de depurador único**. A **política de mesma origem****impede** que os sites consigam fazer **essa conexão HTTP**. Para segurança adicional contra [**ataques de rebinding DNS**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** o Node.js verifica que os **cabeçalhos 'Host'** para a conexão especificam um **endereço IP** ou **`localhost`** ou **`localhost6`** precisamente.
Essas **medidas de segurança impedem a exploração do inspetor** para executar código apenas enviando uma solicitação HTTP (o que poderia ser feito explorando uma vulnerabilidade SSRF).
Você pode enviar o **sinal SIGUSR1** para um processo nodejs em execução para fazer com que ele **inicie o inspetor** na porta padrão. No entanto, observe que você precisa ter privilégios suficientes, portanto, isso pode conceder a você **acesso privilegiado às informações dentro do processo** mas não uma escalada direta de privilégios.
Isso é útil em contêineres porque **desligar o processo e iniciar um novo** com `--inspect` não é uma **opção** pois o **contêiner** será **encerrado** com o processo.
Para se conectar a um **navegador baseado em Chromium**, as URLs `chrome://inspect` ou `edge://inspect` podem ser acessadas para Chrome ou Edge, respectivamente. Ao clicar no botão Configure, deve-se garantir que o **host e a porta de destino** estejam listados corretamente. A imagem mostra um exemplo de Execução de Código Remoto (RCE):
A ferramenta [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug), permite **encontrar inspetores** em execução localmente e **injetar código** neles.
Note que os **exploits de RCE do NodeJS não funcionarão** se conectados a um navegador via [**Protocolo Chrome DevTools**](https://chromedevtools.github.io/devtools-protocol/) (você precisa verificar a API para encontrar coisas interessantes para fazer com ela).
Se você veio aqui procurando como obter [**RCE a partir de um XSS no Electron, por favor, verifique esta página.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
Algumas maneiras comuns de obter **RCE** quando você pode **conectar** a um **inspetor Node** é usando algo como (parece que isso **não funcionará em uma conexão com o protocolo Chrome DevTools**):
No [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) a Rhino Security descobriu que uma aplicação baseada em CEF **registrou um URI personalizado** no sistema (workspaces://) que recebia o URI completo e então **lançava a aplicação baseada em CEF** com uma configuração parcialmente construída a partir desse URI.
Foi descoberto que os parâmetros do URI eram decodificados de URL e usados para lançar a aplicação básica do CEF, permitindo que um usuário **injetasse** a flag **`--gpu-launcher`** na **linha de comando** e executasse coisas arbitrárias.
Altere a pasta onde os **arquivos baixados serão salvos** e baixe um arquivo para **sobrescrever** frequentemente o **código-fonte** da aplicação com seu **código malicioso**.
De acordo com este post: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) é possível obter RCE e exfiltrar páginas internas do theriver.
Em um ambiente real e **após comprometer** um PC de usuário que utiliza um navegador baseado em Chrome/Chromium, você poderia iniciar um processo do Chrome com o **debugging ativado e encaminhar a porta de debug** para que você possa acessá-lo. Dessa forma, você será capaz de **inspecionar tudo o que a vítima faz com o Chrome e roubar informações sensíveis**.
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).