Vulnerabilità XSS in chat [chiusa]

1

Recentemente sono diventato l'amministratore della sicurezza di un sito web. Non sono un maestro della sicurezza, ma l'ho preso come una possibilità per capire veramente come funziona la sicurezza al giorno d'oggi.

Il sito web ha una funzione di chat e mi chiedevo "questa chat è vulnerabile a XSS?" Così ho cercato di vedere quali personaggi sono sfuggiti perché poiché la chat è un prefabbricato, nessuno può dirmi come funziona. Ho trovato che < > sono sfuggiti, tuttavia posso usare il comando: [img]www.anywbsite.com/image.jpg[/img] e mostrerà un'anteprima dell'immagine nella chat.

In questo modo sembra abbastanza sicuro, il problema è che posso inserire qualsiasi URL, anche URL che non esistono, purché abbia un "www" e un ".com" alla fine verrà eseguito il comando.

Mi stavo chiedendo, c'è un modo in cui posso formare un url in una sceneggiatura? o qualcosa del genere.

    
posta lohug 06.02.2017 - 08:09
fonte

3 risposte

2

La specifica dice che l'attributo src deve portare a contenuto non programmato e non interattivo, quindi sembra sicuro lasciare un qualsiasi URI lì dentro.

The src attribute must be present, and must contain a valid non-empty URL potentially surrounded by spaces referencing a non-interactive, optionally animated, image resource that is neither paged nor scripted.

Tuttavia, ciò significa che è possibile inserire un URI nel proprio sito Web e utilizzarlo per tracciare un po 'gli utenti. Lo renderebbe sicuro con una whitelist di domini consentiti.

Inoltre, puoi usarlo per falsificare la lettura umana della chat (ad esempio: screenshot di una chat dove l'amministratore sta urlando, inseriscilo come immagine, e la chat potrebbe sembrare un admin che urla). Non conosco alcuna protezione contro questa, ma la moderazione umana (poiché è una "iniezione di lettura umana").

Infine, per riassumere la cosa CSRF, non è un problema relativo alla chat se è possibile inserire un URL come http://targeted.com/doSomething?on=this_user : è un uso improprio del metodo GET HTTP dal sito Web targeted.com , non dalla chat.

Fuori dal problema degli URI, sfuggire il < e > non è abbastanza: anche le virgolette dovrebbero essere sottoposte a escape, purché alcune altre entità HTML (utilizzando funzioni di ensafing incorporate come htmlentities per PHP). Hai provato a inserire virgolette " o virgolette ' o backtick '' 'o spazi per uscire dal valore di attributo src ?

    
risposta data 06.02.2017 - 13:44
fonte
2

XSS

Se la chat è vulnerabile a XSS o meno dipende da che cosa fa esattamente il software di chat con la stringa inserita nel tag [img] . Presumibilmente lo inserisce nell'attributo src di un tag HTML img . Per quanto ne so, il pieno controllo dell'attributo src non ti dà la possibilità di eseguire script, ma potrebbero esserci ancora alcune cose che potresti provare:

  • Se l'URL non è filtrato o codificato in modo attendibile, prova qualcosa come www.doesnotexist.com" onerror="alert('XSS');" .com .
  • Se l'URL non è quotato, potresti essere in grado di aggirare un filtro semplicemente non utilizzando le virgolette.
  • Se l'immagine è racchiusa in un tag a per renderla selezionabile, quindi l'URL finisce con un attributo href , potresti provare javascript:alert('XSS'); . Nessuna immagine verrà caricata, ma se il ricevitore vi fa clic, lo script verrà eseguito. ( Modifica: Ho appena notato il www.*.com requierment. Non penso che potresti far funzionare questo punto in base a questa regola.)

Ci sono probabilmente più cose che puoi provare. Controlla l'output HTML della chat e prova diversi input per cercare di capire cosa sta succedendo dietro le quinte.

Altri problemi

Ne parlerò brevemente solo perché la tua domanda riguarda XSS:

  • Privacy. Questo potrebbe essere usato per ottenere l'IP della persona con cui stai chattando. (Basta inviare loro un URL a un'immagine su un server che controlli, quindi controllare i log.)
  • CSRF. Vedi la risposta di Rápli András . Non sono sicuro che mi interesserebbe questo, dato che non è un problema con la chat.
  • Password dimenticata. Invia un URL per un'immagine protetta dall'autenticazione di base e il ricevitore riceverà una password. Può essere usato per ingannare le persone ad inserire le loro credenziali per la chat.
risposta data 06.02.2017 - 13:24
fonte
0

however I can use a the command [img]www.anywbsite.com/image.jpg[/img],and it will show a preview of the image on the chat

Questo non è un XSS, ma è una cattiva pratica e rende il tuo sito web in grado di essere coinvolto in attacchi CSRF.

Ogni volta che un'immagine è precaricata, viene inviata una richiesta di HTTP GET a quell'URL, quindi come un esempio di libro che un utente malintenzionato potrebbe provare:

http://onlinebank.com/[email protected]&amount=2000&currency=USD

Ancora una volta, non è una vulnerabilità nel tuo sito Web, ma gli aggressori possono farti diventare l'origine di tutte le cattive richieste malevoli alla banca online vulnerabile. Pertanto, ti consiglio di disattivare la funzione di pre-caricamento dell'immagine o di eseguire il precaricamento delle immagini solo dal tuo sito web.

Modifica: funziona anche con l'url del tuo sito web se non usi i token csrf.

    
risposta data 06.02.2017 - 08:25
fonte

Leggi altre domande sui tag