Pages

Ads 468x60px

miércoles, 23 de abril de 2014

Bypassing básico de filtros XSS IV





El otro día cotilleando los últimos tweets de Rober, vi que había empezado a publicar algún artículo sobre filtros básicos de XSS muy interesantes, y me invitó escribir una entrada sobre XSS, así que aquí está mi granito de arena.

Vamos con la cuarta entrega de los filtros básicos de XSS. 


En PHP existente algunas funciones que podemos utilizar para prevenir en cierta medida los ataques XSS.

En general muchas webs suele recomendar la función htmlentities, cuya salida es la conversión de los caracteres de entrada en entidades HTML. Esta función no es la panacea de todos los ataques XSS, simplemente es un pequeño filtro muy básico.


Por defecto la función tiene activado la flag ENT_COMPAT la cual convertirá las comillas dobles y solo deja las comillas sencillas. Tal vez este pequeño filtro sea un problema para mucha gente pero sigue siendo vulnerable.

Supongamos que tenemos el siguiente código.

    1.  <?php echo "<img alt='Perfil' src='".htmlentities($_GET["img"])."' />"; ?>


Como ya sabemos no podemos utilizar comillas dobles, pero sí comillas simples así que vamos a evadir el filtro aprovechándonos de ellas.


www.webvulnerable.com/miperfil?img= .'onerror='alert(1)


El resultado es la ejecución del alert(1) sin problemas.


  1. <img alt=’Perfil’ src=’.’ onerror=’alert(1)’/>

 
Primero introducimos el punto para forzar un error en el parámetro src que recibe la ruta de la imagen, luego utilizamos el evento de javascript onerror (se ejecuta cuando hay un error en la ruta de la imagen) para lanzar nuestro alert(1) sin problemas.


Finalmente para evitar estos problemas debemos utilizar htmlentities pero con la flag ENT_QUOTES que convertirá tanto las comillas dobles como las simples. 

  1. <?php echo "<img alt='Perfil' src='".htmlentities($_GET["img"], ENT_QUOTES)."' />"; ?>


Recordar siempre filtrar los datos de entrada del usuario y de salida, tanto en el lado del cliente como en el lado del servidor.

Por si quereis más información aquí os dejo un whitepaper con 16 ejercicios resueltos y explicados sobre filtros XSS que publiqué junt con Pepe Vila (@vgvwzq) "Alert(1) To Win!"
 
Espero que os haya servido de ayuda la entrada y recordar que esto es con fines educativos, no para andar tirando scripts por ahí a lo loco.

Un saludo,
Daniel (@DaniLabs)


Creative Commons Licence
1Gb De informacion by Roberto García Amoriz is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Based on a work at http://www.1gbdeinformacion.com/.
Permissions beyond the scope of this license may be available at http://www.1gbdeinformacion.com/.

Perfil profesional en Linkedin

 
Blogger Templates