Sto testando un attacco di iniezione XSS di base. Date le immagini qui sotto, sembra che questo sito sia vulnerabile a XSS?
La whitelist dei personaggi è ancora la migliore pratica contro gli attacchi XSS?
Dalle tue schermate, questa pagina non sembra essere vulnerabile a XSS.
Il modo corretto per prevenire XSS è usando la codifica dell'output . Se un utente digita <script>
e la pagina inserisce <script>
nel codice sorgente HTML, è vulnerabile a XSS. Se invece codifica quell'input dell'utente e inserisce <script>
nel codice sorgente HTML, non viene interpretato come HTML ma come testo <script>
.
Sembra che il tuo sito esegua questa codifica due volte anziché una volta e ciò si traduce nella visualizzazione dell'HTML codificato nei campi di testo.
L'esempio nella domanda sembra mostrare che stanno impedendo l'utilizzo dei tag bersagliandoli. Per esempio. <script>
diventando <script>
. Tuttavia, se UTF lo codifica e quindi SQL lo codifica in qualcos'altro, non è tecnicamente sicuro. Pertanto, è possibile utilizzare un diverso tipo di metodo di iniezione, che è un SQL injection e può essere sfruttato da valori esadecimali, come mostrato di seguito:
Per prima cosa scegli qualcosa da codificare:
Questoverràquindicodificatoperformarequesto:
Quindipuoieseguirel'attacco:
EccounesempiodiquestodaOWASP,duranteiltestperunapossibileiniezione:
Selectuserfromuserswherename=unhex('726F6F74')
Qui'root'èmostratocomevaloreesadecimale726F6F74
Fonti:
HTML.Encode():
Iniezione SQL: link
Esempio OWASP1: link
Evasione OWASP: link
Un altro esempio può essere trovato qui: link
Leggi altre domande sui tag web-application xss