Rottura della stringa XS JS

2

Ho cercato le vulnerabilità XSS nel sito web di un amico (blackbox) e in una delle pagine prende il tuo input e lo inserisce in uno script js, window.location="[INPUT]";
Non potevo interrompere le virgolette perché sono state sostituite con " e %22 rimane %22 , ma posso mettere un \ alla fine del mio input e fugge la citazione originale ( window.location="[INPUT]\"; ) Il che mi dà una stringa non terminata ma non posso influenzare alcun codice dopo di ciò quindi non c'è XSS lì, giusto? Tutto quello che posso fare è rompere il codice e basta

Modifica:
--Alcune informazioni in più--

  1. < , > , & e " vengono sostituiti con &lt; , &gt; , &amp; e &quot;
  2. il server controlla se INPUT inizia con http:// o https://

Cose che ho provato:

  1. Spezza la stringa con </script> => sostituita con &lt;/script&gt; (e fallisce)
  2. Si è tentato di romperlo con l'URL codificato </script> ( %3C%2Fscript%3E ) ma lo mostra come stringa ( window.location = "http://test.com%3C%2Fscript%3E\"; ) e l'errore è ancora SyntaxError: unterminated string literal
posta badprogrammerqq 16.10.2016 - 14:07
fonte

1 risposta

0

Questo non è sfruttabile.

  • Non puoi sfuggire alla stringa perché le virgolette sono codificate. ( " - > &quot; )
  • Non puoi sfuggire al contesto del tag script perché le parentesi angolari sono codificate. ( < - > &lt; )
  • Non puoi creare altro che http[s]:// URL perché l'inizio della stringa è selezionato. Non importa ciò che aggiungi dopo la parte del protocollo, non puoi trasformarlo in un data: o javascript: URL in seguito.

Ci sono altri trucchi che potresti provare, ma sono specifici dell'implementazione. Non ci sono prove che avrebbero funzionato in questo caso, quindi questi sono solo alcuni esempi per darti un'idea:

  • Forse il filtro si ferma dopo un byte NULL? (ad esempio http://%00"<>... )
  • Forse per qualche motivo le varianti Unicode funzionano? (ad esempio U + FF02: )
  • Forse funzionano altri schemi di codifica? (ad esempio \x22 anziché " )
  • ecc.
risposta data 17.10.2016 - 00:40
fonte

Leggi altre domande sui tag