IIS - RequestFiltering per #

1

Mi sono imbattuto in questo link oggi che esegue XSS sul sito per cui era originariamente destinato:

https://<site>/<page>.html/?#prettyPhoto=Not_FeelIng_Safe&%3Cimg%20src=%27x%27%20onerror=alert%287%29%3E&#4B

Ho provato questo sul mio sito, che ha il filtro delle richieste configurato su 404 su img , alert e onerror ma questo URL era consentito.

Ho aggiunto # per negare le regole e l'ho aggiunto anche come sequenza di rifiuto nella scheda QueryStrings, ma era ancora consentito. Presumibilmente perché # è speciale e qualsiasi cosa dopo di essa non conta come URL o Querystring.

È saggio bloccare # se i nostri siti non ne hanno bisogno e se sì, come posso negare # su IIS7?

    
posta DomBat 16.06.2015 - 11:53
fonte

2 risposte

2

La stringa che segue # è l '"identificatore di frammento" ed è normalmente utilizzata per navigare verso un elemento di ancoraggio all'interno di un documento HTML (ma qui viene utilizzato per simulare la navigazione degli URL in un'applicazione a singola pagina).

L'identificatore di frammento viene utilizzato esclusivamente dal browser lato client e non è nemmeno incluso nella richiesta al server Web, quindi non è possibile filtrarlo sul lato server in IIS o in qualsiasi altro server.

(Non dovresti fare affidamento sul filtraggio delle richieste ASP.NET per sicurezza: questo è solo uno dei posti in cui non riesce.)

Potresti provare a "filtrarlo" sul lato client includendo un <script> eseguito prima di qualsiasi altro script, che sabota la pagina e rifiuta di caricare altri script se rileva qualcosa che considera "cattivo" in location.hash , ma è ancora soggetto alle stesse modalità di errore dello sniffing dell'input della lista nera che rendono la convalida delle richieste uno spreco di tempo per tutti.

    
risposta data 16.06.2015 - 13:43
fonte
1

Che browser è questo? Questo dovrebbe essere automaticamente bloccato dal filtro Chromes XSS. Direi che il primo passo sarebbe quello di creare un CSP appropriato link

Dopo l'inizio, attenuando i rischi associati a un compromesso, come l'uso di cookie solo http, il token CSRF e THEN, inizia a fare i filtri client come suggerito da bobince.

    
risposta data 17.06.2015 - 07:31
fonte

Leggi altre domande sui tag