Bypassing del filtro XSS

5
<script>
Something.execute("injectionpoint");  }, true);
</script>

Sto tentando di ignorare un filtro XSS ma non funziona poiché dal momento che " è filtrato come \" o ;\" a seconda di dove è posizionato " . / è filtrato come \/ . Ogni // presente nel carico utile viene rimosso

Altri caratteri come ( ) , < , > , -- non sono filtrati

Ecco un esempio con +alert(1)<!-- come payload

Something.execute("+alert(1)<!--"); }, true);

    
posta user2650277 25.04.2015 - 17:57
fonte

2 risposte

9

Ignora doppia citazione di escape

In base alla tua descrizione, dovrebbe funzionare:

\");alert("xss

Il " sarà scappato come \" , risultando così in \" , che sfugge a \ , ma non a " .

Per evitare ciò, per lo meno devi anche sfuggire \ come \ .

Ignora il doppio virgolette con escape e il doppio backslash su una singola barra rovesciata

In base al tuo commento, suppongo che le parti rilevanti del filtro siano le seguenti:

  1. " - > %codice%
  2. \" - > %codice%

Questo non è sicuro neanche. Un'iniezione potrebbe apparire come questa:

\\");alert(1

\ sarà sfuggito come \ nel passo 1 che ci porta a " , che viene poi trasformato in \" nel passaggio 2. Non puoi usare virgolette doppie nella stringa iniettata, ma quella è non è un problema dato che l'XSS con virgolette singole o completamente senza virgolette è perfettamente possibile.

Per garantire ciò, il doppio backslash dovrebbe essere sfuggito, non trasformato in uno solo, il che ci darebbe \\" con l'iniezione sopra descritta, che è sicura.

    
risposta data 25.04.2015 - 18:33
fonte
0

Sembra un PHP magic_quotes_gpc modificato. "Quando magic_quotes è attivo, all '(single-quote)," (double quote), \ (backslash) e NUL vengono salvati automaticamente con una barra rovesciata. "

Questo non funziona sempre, ma qui ci sono alcuni bypass:

  1. Utilizzare il metodo "String.fromCharCode ()". Per esempio alert ('Ogglas'); sarebbe: String.fromCharCode (97, 108, 101, 114, 116, 40, 39, 79, 103, 103, 108, 97, 115, 39, 41, 59). Puoi utilizzare il plug-in Firefox Hackbar per generare queste stringhe. Nota: non ho esaminato il plug-in del codice, quindi lo faccio a proprio rischio.

  2. Prova a passare valori HEX con codifica URL. Puoi anche provare un doppio URL codificato. A seconda dell'implementazione, il primo processo di decodifica viene eseguito dal protocollo HTTP e l'URL codificato risultante ignorerà il filtro XSS, poiché non ha meccanismi per migliorare il rilevamento. Esempio:

    • Char - > '- > Valore codificato esadecimale - > % 27

    • Codifica esadecimale% - > % 25

    • Doppia codifica - > % 2527

risposta data 14.09.2016 - 18:52
fonte

Leggi altre domande sui tag