utilizzando websocket html5 per aggirare il criterio TCP del firewall

2

Ho letto che html5 abilita l'apertura di socket tcp dal lato client nella sua funzione "websocket".

I firewall come ricordo possono essere configurati per bloccare le connessioni TCP avviate da "l'esterno" cercando pacchetti SYN, ma l'utilizzo di questa funzionalità html5 consente un bypass semplicistico a questa politica.

Mi sto perdendo qualcosa qui? Chi monitorerà quelle chiamate implicite con socket aperto? Sembra che questo comportamento sia un "reverse tcp shell" servito gratuitamente ...

    
posta GalB1t 01.04.2015 - 07:58
fonte

2 risposte

4

Innanzitutto, le connessioni websocket sono inizializzate da javascript che viene eseguita dal browser web sul client. Ciò significa che le tipiche connessioni web socket sono le connessioni in uscita, non le connessioni in entrata. Le connessioni web socket in entrata sarebbero possibili solo quando l'host esegue un server web websocket. Solitamente un normale browser non lo fa. E anche se l'host esegue un server Websocket per qualche motivo: un firewall correttamente configurato in una normale rete client, può, dovrebbe e lo impedirà.

In secondo luogo, i websocket non sono normali socket TCP. Usano un protocollo di frammentazione personalizzato su TCP. Ciò significa che una connessione web-socket può essere aperta solo a un servizio che comprende il protocollo websocket. Pertanto, anche se l'API websocket può essere utilizzata per consentire all'utente (provare a) di connettersi a qualsiasi host remoto, non sarà in grado di utilizzare alcun servizio non progettato per l'utilizzo tramite websocket.

In terzo luogo, questa non è una "shell TCP remota", perché la websocket vive solo nel motore javascript del browser web e nel contesto del documento HTML attualmente visitato. Non dà al sito Web l'utente che sta visitando altri diritti per fare cose sul computer locale di quanto non avrebbe già. Certo, dà all'applicazione javascript la capacità di comunicare con i server remoti, ma c'erano già molti modi per farlo, come AJAX.

Quindi quale potenziale di abuso possibile rimane?

Come proprietario di un sito Web malevolo, potrei diffondere un javascript che consente all'utente di connettersi a un server Websocket e svolgere attività dannose su di esso. Potrei usare questo per trasformare i miei visitatori in zombi di spam per inviare spam ad alcune applicazioni basate su websocket da qualcun altro. Ma websocket ha una funzione incorporata per proteggersi da questo. Il browser Web dell'utente invia l'URL del sito Web con ogni connessione websocket. Ciò significa che un servizio può facilmente ignorare qualsiasi connessione che non proviene da un URL conosciuto.

Per ulteriori informazioni, raccomando RFC-6455 che descrive il protocollo stesso e lo standard W3C per l'API Javascript nei browser web.

    
risposta data 01.04.2015 - 15:00
fonte
2

I WebSocket non sono semplici socket TCP, ma offrono un comportamento simile ai socket TCP all'interno di un tunnel HTTP. Per usarli effettivamente per connettersi a porte arbitrarie devi avere un backend lato server che realizzerà connessioni "reali" TCP alla porta richiesta dal WebSocket.

A parte questo, è meglio porre questa domanda a security.stackexchange.com.

    
risposta data 01.04.2015 - 08:33
fonte

Leggi altre domande sui tag