Quali sono alcuni modi per eseguire un attacco XSS riflesso

3

Mi chiedevo quanti metodi esistono per l'esecuzione degli attacchi XSS.

In quasi tutte le dimostrazioni che vedo, l'attacco viene attivato in uno dei seguenti 3 modi:

  1. Inserendo lo script in un campo di input. Il front-end utilizza quindi quell'input per popolare una richiesta, che è già stata progettata per eseguire. L'input dello script viene restituito nella risposta della richiesta e quindi viene eseguito se il front-end lo aggiunge al DOM.
  2. Inserendo la richiesta nella barra degli indirizzi. Funziona solo con richieste GET. Se uno dei parametri ha uno script per l'input e se il parametro è visibile (come html) nella risposta, la pagina di risposta lo eseguirà.
  3. Fornendo un utente inconsapevole con un link. Se l'utente clicca per errore sul link, eseguirà inavvertitamente la procedura descritta al punto # 2.

Ci sono altri modi in cui è fatto? Ci sono risorse che descrivono altri modi di accadere?

Inoltre, se il sito Web utilizza i token di sessione per ogni accesso, è comunque disponibile per ottenere quel token incluso utilizzando i metodi 2 e 3? Oppure i token di sessione ci proteggono da questi approcci?

    
posta harrys 23.08.2018 - 23:10
fonte

1 risposta

1

Il punto 1. è più un problema di auto-XSS (basato su DOM). E come hai detto, i punti 2 e 3. sono veramente gli stessi (l'attacco avviene visitando un URL).

Una richiesta GET tramite un collegamento è il modo più comune per eseguire un attacco XSS. Il link potrebbe ad esempio essere inviato a una vittima via email o pubblicato in un forum.

Ma ci sono altri modi. La caratteristica che definisce XSS riflesso è che l'input è riflesso , il che significa che il server prende una sorta di valore da una richiesta HTTP, la inserisce in un contesto HTML nella risposta e il browser restituisce quella risposta , quindi eseguendo il codice inserito.

XSS riflesso basato su POST

L'XSS riflesso può anche essere eseguito tramite richieste POST (che non sono protette da CSRF). Ad esempio:

<form action="https://example.com/vulnerable" method="POST">
    <input type="hidden" name="number" value="[XSS payload]" />
</form>
<script>document.forms[0].submit();</script>

Allo stesso modo, una richiesta GET potrebbe essere inviata tramite un modulo (cambiando il method in GET ). Un utente malintenzionato potrebbe scegliere questo approccio se è richiesta una richiesta POST o se ritiene che sia più probabile che un utente visiti una pagina in cui può pubblicare script e meno probabilmente che farà clic su un collegamento al sito della vittima.

Sfruttamento di Self-XSS

Il tuo punto 1. potrebbe essere sfruttabile se il sito è framingabile. Alcuni browser, ad es. L'ultima volta che ho controllato Firefox, consentono il trascinamento del testo negli iframe (ma non su di essi).

Eseguendo un attacco di clickjacking, un utente malintenzionato potrebbe convincere una vittima a "immettere" il payload XSS ed eseguirlo.

Un altro modo per eseguire un self-XSS è semplicemente chiedere all'utente di pubblicare il payload ("puoi pubblicare questo lungo post HTML [contenente un payload XSS] sul tuo sito web?", "Puoi caricare questo immagine innocua [il cui nome file contiene un carico utile XSS] sul tuo blog? ", ecc.)

Token di sessione con (non) protezione

do session tokens protect us from these approaches?

Se i token di sessione sono sempre inclusi nell'URL e la pagina non riflette alcun input quando il token di sessione è mancante (e il token di sessione è generato in modo sicuro), allora quello sarebbe davvero proteggersi da XSS (non autoreferenziali) che trasmettono a una vittima un collegamento malevolo. Allo stesso modo, i token CSRF proteggono le richieste da XSS (non auto) riflesse.

Tuttavia, ora hai un nuovo problema. I dati sensibili negli URL sono strongmente scoraggiati. Può facilmente fuoriuscire tramite i referer, quando gli utenti condividono link, ecc. E una volta che ciò accade, chiunque potrebbe avere accesso a tale account utente.

    
risposta data 24.08.2018 - 08:12
fonte

Leggi altre domande sui tag