Backup Oficial de SeguridadBlanca.Org

jueves, 17 de septiembre de 2009

Los Xss Cuidado!


Durante un buen tiempo yo vine dando como respuesta a los Xss el Htmlentities como función pero he dado con que no , no es tan simple como eso... de hecho sigue siendo vulnerable a Xss solo tienes que aplicar un pequeño bypass que les enseñaré hoy...

un codigo que supuestamente deberia de evitar el XSS sería:


<?php

$test = htmlentities($_POST['valor']);

echo '$test'
?>


y bueno con un formulario hecho...


Ahora ustedes dirán que tiene ese codigo de mal pues... el filtro htmlentities

Como ustedes saben o no el filtro de los htmlentities lo que hace es pasarlo a utf-7 entonces no se interpreta y ya pues no se ejecuta...

la funcion que usa es algo asi en PHP:


<?php

echo mb_convert_encoding('tu code xss', 'UTF-7');

?>


entonces ahi les devolvería un valor como:

UTF-7 pero que pasa si en el valor del Xss lo ponemos ya en UTF-7 es decir en ves de poner nuestro conocido:


<script>alert(/hacked/);</script>


con // en ves de '' para evitarnos problemas de transformación...

entonces ya transformado sería:


+ADw-script+AD4-alert(/hacked/)+ADsAPA-/script+AD4-


eso causaría un Bypass que igual ejecutaría el Xss...


Como ven... todos cometemos este error.. o la mayoría... es decir prácticamente todos los webmasters que ponian htmlentities estan un poco fregados asi que les recomiendo cambien y lo digo incluyendome yo lo usaba hasta que decidí hacer un experimento con los http headers y netcat hasta que di con este problemin investigue un poco mas en google y como ven pues es bien crítico esto... para los que ya tenían conocimiento de eso pues fomentemelo para que no se siga cometiendo este error... espero que no lo mal gasten el conocimiento...


Ahora como corrigen el error? pues muy fácil...


<?php

$test = htmlspecialchars($_GET['test'], ENT_QUOTES);

?>


en ves de eso usen htmlspecialchars() como función para que funcione bien... mmm tambien pueden usar sus str_replace() pero ya vean ustedes...

espero que este tuto les haya gustado, me he esforzado mucho en hacerlo...

Pd: sorry por la imagen pero es que =s no tengo alguien que me haga y edite las imagenes para que salga con la url jaja...


Saludos
Dr.White

5 comentarios:

  1. XD bien a pero hasta ahora no entiendo el como usaste el netcat pa tu esperimento Xd salu2 y suert con el blog

    ResponderEliminar
  2. interesante y muy util porque como todos sabemos (los desarrolladores) el usuario final es al q menos confianza le debemos tener.. como una vez escuche en una conferencia de seguridad.. no confies ni en ti mismo (les recomiendo dormir con la luz prendida xD)

    ResponderEliminar
  3. Dr, quisiera hacerte un par de preguntas personales... ¿Como mantenes este blog tan actualizado y con tan variada información? ¿Estas todo el dia pendiente de diferentes paginas recolectado información para publicarla? ¿Que paginas visitas?

    ResponderEliminar
  4. mm bueno anónimo para empesar me gustaría que pongan sus nombres o sus nicks se me hace feo contestarle a alguien que tiene de nick anonimo jaja pero si quieren mantenerlo pues respeto la desición, bueno pues leo los blogs de DragonJAR y SecurityByDefault son los que mas leo... mm despues lo que pongo aquí no es fruto de leer sino mas bien de hacer experimentos... lo que se venga a tu mente debes intentar hacerlo para ver si funciona, y pues para mantenerlo actualizado todos los dias es díficil pero me consuela saber que ayudo a otra gente para que aprenda.

    Saludos

    ResponderEliminar
  5. graicas men me estoy interiorisando en este tema de seguridad y veo que lo primordial es estar atento a todo y estar muy bien actualizado con muchas paginas es mucho trabajo xD, pero me keda much opor leer cada dia sale algo nuevo, jeje bueno mientras nos mantengas atentos con tus pruebas y lecturas y sumado lo mio creo ke hay una luz al final del camino xD, graias por todo amigo buena onda y sigue hasta donde mas pueas mira que ayudas a muchos , chau ! jeje

    ResponderEliminar