<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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **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.
As conexões WebSocket são estabelecidas por meio de um aperto de mão **HTTP** inicial e são projetadas para serem **de longa duração**, permitindo mensagens bidirecionais a qualquer momento sem a necessidade de um sistema transacional. Isso torna os WebSockets particularmente vantajosos para aplicativos que requerem **baixa latência ou comunicação iniciada pelo servidor**, como fluxos de dados financeiros ao vivo.
Uma explicação detalhada sobre o estabelecimento de conexões WebSocket pode ser acessada [**aqui**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). Em resumo, as conexões WebSocket geralmente são iniciadas por meio de JavaScript do lado do cliente, conforme mostrado abaixo:
Durante o estabelecimento da conexão, um handshake é realizado entre o navegador e o servidor via HTTP. O processo de handshake envolve o navegador enviando uma solicitação e o servidor respondendo, conforme ilustrado nos exemplos a seguir:
- Os cabeçalhos `Connection` e `Upgrade` sinalizam o início de um handshake do WebSocket.
- O cabeçalho `Sec-WebSocket-Version` indica a versão desejada do protocolo WebSocket, geralmente `13`.
- Um valor aleatório codificado em Base64 é enviado no cabeçalho `Sec-WebSocket-Key`, garantindo que cada handshake seja único, o que ajuda a evitar problemas com proxies de cache. Este valor não é para autenticação, mas para confirmar que a resposta não é gerada por um servidor ou cache mal configurado.
- O cabeçalho `Sec-WebSocket-Accept` na resposta do servidor é um hash do `Sec-WebSocket-Key`, verificando a intenção do servidor de abrir uma conexão WebSocket.
Se você descobrir que os clientes estão conectados a um **websocket HTTP** da sua rede local atual, você pode tentar um [Ataque de Spoofing ARP](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) para realizar um ataque MitM entre o cliente e o servidor.\
Uma vez que o cliente está tentando se conectar a você, você pode então usar:
Você pode usar a **ferramenta** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **para descobrir, identificar e procurar por****vulnerabilidades** conhecidas em websockets automaticamente.
* O **Burp Suite** suporta a comunicação MitM de websockets de forma muito semelhante ao que faz para a comunicação HTTP regular.
* A extensão [**socketsleuth**](https://github.com/snyk/socketsleuth) do **Burp Suite** permitirá que você gerencie melhor as comunicações de Websocket no Burp, obtendo o **histórico**, definindo **regras de interceptação**, usando regras de **correspondência e substituição**, usando **Intruder** e **AutoRepeater**.
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** Abreviação de "**WebSocket/Socket.io Proxy**", esta ferramenta, escrita em Node.js, fornece uma interface de usuário para **capturar, interceptar, enviar mensagens personalizadas** e visualizar todas as comunicações WebSocket e Socket.IO entre o cliente e o servidor.
* [**wsrepl**](https://github.com/doyensec/wsrepl) é um **REPL interativo de websocket** projetado especificamente para testes de penetração. Ele fornece uma interface para observar **mensagens websocket recebidas e enviar novas**, com um framework fácil de usar para **automatizar** essa comunicação. 
* [**https://websocketking.com/**](https://websocketking.com/) é um **site para se comunicar** com outros sites usando **websockets**.
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) entre outros tipos de comunicações/protocolos, fornece um **site para se comunicar** com outros sites usando **websockets**.
No [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) você tem um código para lançar um site usando websockets e neste [**post**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) você pode encontrar uma explicação.
**Sequestro de Websocket entre Sites**, também conhecido como **sequestro de Websocket entre origens cruzadas**, é identificado como um caso específico de **[Falsificação de Solicitação entre Sites (CSRF)](csrf-cross-site-request-forgery.md)** que afeta os handshakes de Websocket. Essa vulnerabilidade surge quando os handshakes de Websocket autenticam exclusivamente por meio de **cookies HTTP** sem **tokens CSRF** ou medidas de segurança semelhantes.
Os atacantes podem explorar isso hospedando uma **página da web maliciosa** que inicia uma conexão de Websocket entre sites para uma aplicação vulnerável. Consequentemente, essa conexão é tratada como parte da sessão da vítima com a aplicação, explorando a falta de proteção CSRF no mecanismo de manipulação de sessão.
Observe que ao **estabelecer** uma conexão **websocket**, o **cookie** é **enviado** para o servidor. O **servidor** pode estar usando isso para **relacionar** cada **usuário específico** com sua **sessão de websocket com base no cookie enviado**.
Então, se por **exemplo** o **servidor websocket****enviar de volta o histórico da conversa** de um usuário se uma mensagem com "**READY"** for enviada, então um **XSS simples** estabelecendo a conexão (o **cookie** será **enviado****automaticamente** para autorizar o usuário vítima) **enviando** "**READY**" será capaz de **recuperar** o histórico da **conversa**.
Neste post do blog [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) o atacante conseguiu **executar Javascript arbitrário em um subdomínio** do domínio onde a comunicação do websocket estava ocorrendo. Como era um **subdomínio**, o **cookie** estava sendo **enviado**, e como o **Websocket não verificava a Origem corretamente**, era possível se comunicar com ele e **roubar tokens dele**.
Copie a aplicação web que deseja se passar (os arquivos .html, por exemplo) e dentro do script onde a comunicação do websocket está ocorrendo, adicione este código:
Agora baixe o arquivo `wsHook.js` em [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) e **salve-o dentro da pasta com os arquivos da web**.\
Como os WebSockets são um mecanismo para **enviar dados para o lado do servidor e do cliente**, dependendo de como o servidor e o cliente lidam com as informações, **os WebSockets podem ser usados para explorar várias outras vulnerabilidades como XSS, SQLi ou qualquer outra vulnerabilidade web comum usando a entrada de um usuário de um websocket**.
Essa vulnerabilidade poderia permitir que você **burlasse as restrições de proxies reversos** fazendo-os acreditar que uma **comunicação websocket foi estabelecida** (mesmo que não seja verdade). Isso poderia permitir que um atacante **acessasse endpoints ocultos**. Para mais informações, verifique a seguinte página:
<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-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.