È possibile falsificare la richiesta di posta e bypassare la lunghezza massima nella casella di inserimento?

4

Ho una casella di input con maxlength=12 , e quella casella di input è vulnerabile a xss.

Ma a causa della lunghezza massima 12 non è possibile costruire alcun vettore xss veramente valido. L'input dell'utente è memorizzato nell'attributo value="user input" . Quando l'utente intercetta la richiesta post con burpproxy, può modificare i parametri del post e causare xss.

Ora la mia domanda è che è possibile fare una richiesta di posta da un altro sito che ignora l'elemento maxlength. Durante i miei tentativi di exploit, mi porta alla pagina in cui si trova la casella di input e taglia tutto il 12 ° carattere.

Questa richiesta può essere falsificata e ignorata per sfruttare il problema xss?

Questa è la ricerca del modulo sulla pagina con lunghezza massima:

Questo è il mio tentativo di sfruttarlo dalla mia pagina:

Quando faccio clic sul pulsante della pagina di exploit, semplicemente mi rimanda alla pagina principale e l'input è troncato al dodicesimo carattere.

    
posta Daniel 18.06.2012 - 17:08
fonte

2 risposte

4

Sì. È possibile. Maxlenght è un attributo html nell'oggetto DOM del browser client.

La lunghezza massima è significativa solo nel browser client, non è significativa sul lato server a meno che non si codifichi il lato server per convalidare la lunghezza dell'input.

Se si utilizza un proxy di intercettazione che non crea un oggetto DOM, è possibile ignorare facilmente la lunghezza massima o qualsiasi altro parametro e javascript.

L'esclusione può essere effettuata tramite un dominio / pagina Web diverso con un diverso attributo html che non pone alcuna restrizione sulla lunghezza dell'input per causare XSS.

Sembra che il tipo di XSS che si sta tentando sia un difetto del server XSS non persistente - L'input dell'utente è costituito da codice dannoso che viene restituito nella risposta del server alla richiesta, non viene memorizzato nell'app Web in modo che sia specifico per tale richiesta.

Penso che sia necessario migliorare il javascript che si sta utilizzando per sfruttare XSS. onmouseover="alert(0)" non può sfruttare XSS, è solo un'azione locale basata su DOM per il browser client, onmouseover non invia l'input al server per tornare al client. Il tuo javascript deve essere inviato a http://www.site.rs/usersearch.php e restituito dal server.

    
risposta data 18.06.2012 - 18:22
fonte
4

maxlength non è una protezione, è piuttosto a scopo di usabilità (rispetto alla sicurezza). Ci sono molti modi per aggirare questo tipo di protezione. Il più semplice è la creazione di un altro sito Web con modulo, che invia alla tua posizione.

Ogni sanitizzazione / limitazione non deve essere utilizzata sul lato client. Ogni JavaScript o xHTML (come maxlength ) sono dannosi per scopi di sicurezza. La soluzione migliore è avere la convalida sul lato server.

    
risposta data 18.06.2012 - 18:23
fonte

Leggi altre domande sui tag