WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3...
Transcript of WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3...
![Page 2: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/2.jpg)
• Licenciado en Sistemas UTN desde 2000
• Desarrollador desde los 8 años
• CISSP (Certified Information Systems Security
Professional) desde 2008
• Microsoft MVP Security (Most Valuable
Professional) desde 2010
• CCSK (Certificate Cloud Security Knowledge)
desde 2014
• Creador y Director de Segu-Info
• Consultor independiente en Seguridad de la
Información
Sobre Cristian Borghello
![Page 3: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/3.jpg)
WEB 1.0HTML
WEB 2.0LAMP
Tiempo realAsincronía
Historia de la Web
http://slides.html5rocks.com/#title-slide
![Page 4: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/4.jpg)
• Diseñando para transferir “documentos”
• Comunicación bi-direccional
• Comunicación half-dúplex (TCP es full-
dúplex)
• Cada requerimiento envía y recibe
cabeceras
• Las cabeceras agregan
sobrecarga
El protocolo HTTP es…
Leeeeeento
![Page 5: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/5.jpg)
Estudio
del
objetivo
![Page 6: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/6.jpg)
Servidor Web
Petición
Navegador Web
Respuesta
Pull (método tradicional)
![Page 7: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/7.jpg)
Datos
Push (lo que necesitamos)
Evento
![Page 8: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/8.jpg)
![Page 9: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/9.jpg)
Petición 1
Respuesta 1
Ajax (Polling)
Petición 2
Respuesta 2
Petición 3
Respuesta 3
Petición N
Respuesta N
En XMLHttpRequest (XHR) en realizan peticiones
HTTP y los datos son transferidos vía XML, JSON…
¡Pero sigue siendo exceso de HTTP!
![Page 10: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/10.jpg)
Petición
Respuesta 1
Comet (Long Polling)
Respuesta N
Alex Russell de www.DojoToolkit.org definió la técnica
Dojo es el primer Framework que implementa Comet
COMET
Petición
Comet usa AJAX con una petición prolongada
¡Pero sigue siendo exceso de HTTP!
![Page 11: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/11.jpg)
Petición
Respuesta 1
Streaming(Loooong Polling)
Respuesta N
Respuesta 2
![Page 12: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/12.jpg)
![Page 13: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/13.jpg)
WebSocket (I)
• La especificación WebSocket (RFC 6455) es parte
de la iniciativa de HTML5
• WebSockets define una API que permite a las
páginas web, la comunicación en dos vías con un
host
• WebSocket define un canal de comunicación de
texto full-duplex y bidereccional que opera a
través de un solo conector TCP/HTTP
• WebSockets proporcionan una enorme reducción
de tráfico de redhttp://websocket.org/
http://socket.io/
http://pusher.com/
![Page 14: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/14.jpg)
WebSocket (II)
• WebSocket simplifica la complejidad en la
administración de conexiones
• Representa la evolución en la comunicación
web, en comparación con Ajax y Comet
• Tanto el servidor como el cliente pueden
enviar datos en cualquier momento, y al
mismo tiempo
• Sólo los datos son enviados, sin sobrecarga de
cabeceras HTTP, lo que reduce drásticamente
el ancho de banda
• Baja latencia entre el cliente y el servidor
![Page 15: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/15.jpg)
WebSocket (III)
• Para conectarse desde un cliente, se crea una
instancia WebSocket a través de la dirección
ws://... (80) o wss://... (443)
• La nueva conexión se establece a través de un
“Upgrade” del protocolo HTTP durante el
handshake del cliente y el servidor y sobre la
misma conexión de TCP/IP existente
![Page 16: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/16.jpg)
Petición
Frame 1
WebSocket
Frame 2
Frame N
WebSocket
![Page 17: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/17.jpg)
![Page 18: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/18.jpg)
GET ws://segu-info.com.ar/ HTTP/1.1
Host: segu-info.com.ar
Connection: Upgrade
Sec-WebSocket-Key: uRovscZjNol/umbTt5uKmw==
Upgrade: WebSocket
Sec-WebSocket-Version: 13
Origin: http://segu-info.com.ar
Re
qu
est
HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: rLHCkw/SKsO9GAH/ZSFhBATDKrU=
Access-Control-Allow-Origin: http://segu-info.com.ar
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Re
spo
nse
HandShake
![Page 19: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/19.jpg)
Implementaciones en Servidor
PHPRachet – http://socketo.me
Node.jshttp://socket.io/
https://github.com/Worlize/WebSocket-Node
https://github.com/einaros/ws
Java http://www.eclipse.org/jetty/
Rubyhttp://github.com/igrigorik/em-websocket
Python http://code.google.com/p/pywebsocket/
https://github.com/facebook/tornado
.NEThttp://git.warmcat.com/cgi-
bin/cgit/libwebsockets/
http://superwebsocket.codeplex.com/
http://msdn.microsoft.com/en-
us/library/system.net.websockets(v=vs.11
0).aspx
![Page 20: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/20.jpg)
Reducción de Tráfico
http://refcardz.dzone.com/refcardz/html5-websocket
![Page 21: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/21.jpg)
WebSocket en Chrome
![Page 22: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/22.jpg)
![Page 23: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/23.jpg)
WebSocket en ZAP
• El Proxy OWASP ZAP es una herramienta fácil
de usar y permite la búsqueda de
vulnerabilidades en aplicaciones web
• ZAP ofrece escáneres automáticos, así como
conjunto de herramientas que permiten
encontrar vulnerabilidades de seguridad
• ZAP es era el único* Proxy que permite análisis
de WebSocket
* Ya no. Acaba de publicarse BURP 1.5.21 y 1.6
http://releases.portswigger.net/2014/01/v1521.html
![Page 24: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/24.jpg)
WebSocket en ZAP
![Page 25: WebSocketscon ZAP - OWASP · Ajax (Polling) Petición 2 Respuesta 2 Petición 3 Respuesta 3 Petición N Respuesta N En XMLHttpRequest(XHR)en realizan peticiones HTTP y los datos son](https://reader030.fdocuments.in/reader030/viewer/2022011811/5e0f4d71a815d66e4f4f727c/html5/thumbnails/25.jpg)
¿Quiénes lo soportan?
http://caniuse.com/#feat=websockets