XSS con input nell'attributo onclick

1

Se ho ...

<table onclick="texttexttexttextUSERINPUTHERE"></table> XSS sarebbe possibile? Intendo con > e "filtrato, so che se non c'era del testo dietro l'input dell'utente, potevi mettere alert (0), e che si sarebbe attivato quando cliccato, ma non so se è possibile con questo caso.

    
posta Michael Blake 07.07.2014 - 09:00
fonte

2 risposte

5

È molto possibile:

texttexttext=function(){};alert(document.cookie); 

Ti darebbe l'esecuzione del tuo codice, indipendentemente da quale sia la stringa letterale. Lo trasformi in una funzione inutilizzata e dopo tutto esegui tutto.

Modifica: in più, puoi spesso utilizzare virgolette singole come sostituto delle virgolette doppie.

    
risposta data 07.07.2014 - 10:33
fonte
1

Probabilmente vuoi utilizzare un campo modulo di input nascosto per archiviare l'input dell'utente invece di inserirlo in linea. Puoi disinfettarlo prima di memorizzarlo, ma in questo esempio è sterilizzato su richiesta.

L'effettiva disinfezione dell'input dell'utente può essere eseguita in momenti diversi in lingue diverse, quindi è semplicemente astratta con jazzhands .

<script>
    var myNamespace = {};
    myNamespace.sanitize = function (ickyUserInput) {
        var sanitizedUserInput = "*jazzhands*";
        //do real work here
        return sanitizedUserInput;
    }
    myNamespace.tableClick = function (tableClickParameter) {
        var userInput = myNamespace.sanitize($('#userInput1').val());
        //do work without fear of bad users
    };
</script>

<table onclick="myNamespace.tableClick('texttexttexttext')">
    <tr><td>Hi mom!</td></tr>
</table>

<input id="userInput1" type="hidden" value="=function(){};alert(document.cookie);" />
    
risposta data 07.07.2014 - 21:49
fonte

Leggi altre domande sui tag