Testando WebSocket

10:59 Daniel Fest 0 Comentarios




Segundo a OWASP, WebSockets HTML5 permite que o cliente/servidor criem canais Full-duplex (bidirecionais), possibilitando uma comunicação assíncrona independente da atualização da página após um handshake inicial HTTP.
Plataformas que precisam de comunicação rápida costumam utilizar este meio para envio e recebimento de requisições específicas.
O protocolo possui algumas características bem conhecidas que podem ser exploradas causando algum tipo de transtorno.
Entre elas, o servidor não valida o cabeçalho da origem das requisições, portanto o servidor aceitará comunicação vinda de qualquer lugar possibilitando um ataque de CSRF, por exemplo.
Quando um canal não seguro é utilizado, um atacante pode interceptar a comunicação em texto claro e realizar as requests de seu próprio computador. É importante reconhecer na primeira etapa do teste se a comunicação está utilizando um canal seguro (wss://).
Uma terceira característica encontrada no protocolo é a possibilidade de abertura de inúmeras conexões viabilizando um ataque de negação de serviço.
Existem programas e extensões de browser conhecidos para captura e leitura dos dados de comunicação que utilizam Web Sockets.
As mitigações de tais características são simples, mas requerem atenção. A validação da origem da requisição, utilizar um canal de seguro de comunicação e limitar uma quantidade de conexões por IP são boas práticas que podem ser implementadas para contornar os problemas apresentados.
Conclusão:
Fique ligado ao executar testes de invasão em sites que utilizam esta tecnologia. Se entre interações com a aplicação não são realizadas requisições HTTP, é possível que esteja utilizando WebSockets para troca de informações. Entender como é feito e se inicia o processo de comunicação é um passo essencial para os testes. A partir daí, basta interceptar as requisições e testá-las de acordo com o escopo de cada chamada. O entendimento do funcionamento deste recurso não é difícil, mas seu uso não costuma ser muito difundido.
Você já usou Websocket em alguma aplicação? Já testou alguma aplicação que utiliza este recurso? Conta pra gente.
Fontes:
https://www.owasp.org/index.php/Testing_WebSockets_(OTG-CLIENT-010)
https://www.blackhillsinfosec.com/how-to-hack-websockets-and-socket-io/
https://www.virtuesecurity.com/pentesting-websockets/
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications 

0 comentários: