Perché questo codice non funziona? [chiuso]

-2

Ho trovato un'area su un sito (non può rivelare il nome) che ti permette di inserire l'input e lo restituisce in questo formato:

<p>
    <strong>text here</strong>
</p>

Non è filtrato, quindi puoi inserire cose come <img src=x> , e lo restituirà, ma non lo analizza e non riesco a capire perché non lo sta analizzando. Ho controllato se converte le parentesi in Unicode, ma non lo fa.

Qualcuno sa cosa sta facendo?

EDIT : converte parentesi in Unicode, ma è possibile ignorare questo filtro in qualche modo?

    
posta Jack 23.12.2016 - 19:39
fonte

1 risposta

2

Devi includere molte più informazioni, altrimenti questa domanda non è responsabile. Non penso che abbiamo una domanda "perché XSS non funziona", quindi cercherò di aggiungere una risposta canonica qui.

Perché l'XSS non funziona?

Quindi hai un sito web, prende il tuo contributo e te lo rispecchia. Questo potrebbe essere vulnerabile a XSS! Ma se inserisci un payload, non viene eseguito. E adesso?

Ecco le domande a cui dovresti rispondere:

  1. Codifica: come viene effettivamente restituito l'input? : la parte importante non è il modo in cui l'input ti appare dopo che il browser lo ha analizzato, ma come appare il codice sorgente. Quindi dovresti guardarlo. Utilizzare un proxy di intercettazione (ZAP, Burp, ecc.) O controllare il codice sorgente nel browser. I caratteri rilevanti come < , > , " , ' sono effettivamente restituiti in questo modo? Oppure sono codificati, ad es. &lt; e così via. Se sono codificati, il sito Web probabilmente non è vulnerabile (potresti provare diverse codifiche, ecc. Per bypassare la codifica, ma è improbabile).
  2. Filtro: l'input è cambiato in altro modo? : i caratteri così rilevanti non sono codificati, il che significa che hai un'iniezione HTML al minimo. Ora è necessario verificare se è possibile inserire un contesto Javascript. Sono tag come <script > filtrata? Puoi utilizzare gli attributi evento come onMouseOver ? Puoi utilizzare altri tag HTML interessanti come img , input , frame , ecc.? Il filtraggio è spesso interrotto, quindi anche se le cose semplici vengono filtrate, approfondisci ulteriormente.
  3. Filtri browser: perché il mio payload non è in esecuzione? : Ok, ora sai che il sito web è vulnerabile, hai il tuo payload piacevole come alert(1) , ma non succede niente. Hai disattivato il filtro XSS del tuo browser? In caso di dubbi, utilizza Firefox senza plug-in, poiché non ha un filtro.
  4. Intestazione HTTP : sai che il sito è vulnerabile, sai che il tuo browser eseguirà i payload XSS, ma, comunque, non sta succedendo nulla? Quindi dovresti controllare l'intestazione HTTP. È un set CSP? Potrebbe impedire l'esecuzione di script inline? Se è così - e non puoi caricare file .js su un'origine attendibile -, questa è ancora una vulnerabilità, ma puoi scegliere come target solo i browser più vecchi o lasciare un'iniezione HTML (che, sebbene meno grave di XSS, è ancora molto potente) .
risposta data 23.12.2016 - 20:54
fonte

Leggi altre domande sui tag