payload XSS senza - & "= ()

0

È possibile costruire un payload XSS senza l'uso di questi caratteri - & < > "= ()? Il server non sta eseguendo alcuna codifica di output.

Consideriamo entrambi i casi in cui l'input dell'utente viene inserito in 1. valore attributo, 2. Corpo HTML.

    
posta Arka 08.11.2017 - 07:44
fonte

2 risposte

3

@Arminius lo ha coperto abbastanza bene. Ma ci sono delle eccezioni a seconda dell'attributo HTML. Qui ci sono solo due esempi (altri esistono, in gran parte legati agli URL, ma onX e alcuni altri attributi sono anche casi speciali; inoltre, con l'uso di framework JS anche i gadget di script ).

attributo href:

// user-supplied link:
<a href="[user_input]">click</a>

attacco:

javascript:alert'1'

meta attributo:

// user-supplied link for redirect:
<meta http-equiv="refresh" content="0;url=[user_input]">

attacco:

data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg
    
risposta data 08.11.2017 - 12:03
fonte
3

Generalmente, no. Almeno non senza precondizioni (alcune delle quali @tim hanno messo in evidenza ), perché:

  • Puoi solo sfuggire da un valore di attributo introducendo la citazione corrispondente . (Presumo che tu ti stia riferendo a un attributo con doppia virgoletta, quindi un payload senza " non ti porta oltre il valore dell'attributo. Ovviamente, puoi sfuggire a un attributo con quotatura singola perché ' non è nella lista nera , o da uno non quotato utilizzando uno spazio.)

  • Nello stato dei dati (al di fuori di qualsiasi tag) è possibile ottenere XSS solo introducendo nuovi tag. Tutto il resto viene semplicemente considerato come dati. Quindi se < è nella lista nera, sei sfortunato.

risposta data 08.11.2017 - 10:12
fonte

Leggi altre domande sui tag