Ho un'applicazione che sfugge ai seguenti caratteri speciali.
& < > " '
L'applicazione visualizza pesantemente i parametri di richiesta HTTP in tutta l'applicazione. I parametri della richiesta vengono utilizzati nel corpo HTML, nei tag div, anche all'interno dei tag Javascript <script>
. L'unica difesa in questo momento sta sfuggendo a questi 5 caratteri speciali.
Che cosa ho provato fino ad ora?
- Leggi il cheat OWASP XSS Prevention e il cheat sheet Bypass del filtro OWASP.
- Ho provato a replicare l'applicazione sul mio sistema locale e ho provato a sfocare l'applicazione con i payload XSS.
Le mie domande
-
Il cheat di OWASP consiglia di eseguire l'escape di
& < > " ' /
se utilizzato all'interno dei tag HTML. Il filtro della mia applicazione non è in grado di eseguire l'escape solo del carattere/
. Credo che/
sia necessario solo se l'attributo HTML non è quotato. Ho ragione nel capire questo? -
Diciamo, abbiamo il seguente codice HTML all'interno di una pagina JSP. Questo può essere aggirato quando
& < > " ' /
è sfuggito?
un.<input type="hidden" name="choice" value="<%= encode(req.getParameter("choice")) %>">
b.<div> <%= encode(req.getParameter("choice")) %> </div>
c.<script> document.write("<%= encode(req.getParameter("choice")) %>") </script>
Sono perfettamente consapevole che questo non è sufficiente, ma ho provato un ampio elenco di payload XSS e non sono riuscito a ignorarlo. Escaping questi 5 caratteri all'interno di un contesto HTML mi sembra abbastanza.
Apprezzerei molto se voi poteste esprimere le vostre opinioni su questo. Mi piacerebbe davvero vedere questo filtro aggirato.