Menu

Ataques maliciosos I – XSS

Octubre 21, 2010 - PHP

En un post anterior hable acerca de cómo sanear datos con las nuevas funciones de PHP, en esta ocasión quise mostrarles como afectan estas vulnerabilidades a nuestros sistemas y decidí hacer una seria de posts para mostrar ejemplos concretos de los tipos de ataques que existen, los ejemplos estan en PHP sin embargo es valido para cualquier lenguaje (guardando las proporciones) web.

Introducción

Los problemas de seguridad en las aplicaciones web no son nada nuevo, lo que si es nuevo los tipos de ataques que se presentan y van creándose a medida que surgen nuevas tecnologías. En este post hablaremos acerca de ataques XSS.

Que es XSS

XSS es definido como un ataque Cross-Site Scripting y consiste en ingresar código HTML o JavaScript en formularios, con que objetivo? para ejecutar el código que acabamos de ingresar alterando de esta manera el contenido original de la pagina.

El ataque

Vamos a simular un ataque inocente con un código que mas de uno ha usado (me incluyo).


<form action="<?php echo $_SERVER['PHP_SELF']; ?>">

A simple vista no parece que haya algún problema con el código, pero que ocurre si al llamar a la pagina ingresamos además de la dirección lo siguiente:


/”><script>alert(“Deberías hacer algo con este problema”)</script>

El resultado lo podemos ver en el siguiente video:

Ataque XSS

Clic en la imagen para reproducir

Como puedes ver algo tan sencillo como imprimir la variable global $_SERVER[‘PHP_SELF’] supone un problema y un agujero de seguridad enorme, (Si tienes aplicaciones de esta forma mas vale que las vayas actualizando) para quienes usamos esta variable (Lo confieso he cometido el error en mención).

Solución

La solución es sencilla, NUNCA imprimas valores sin filtrarlos antes, para esto PHP dispone de muchas funciones, como por ejemplo Filter_var.

En mi siguiente post hare un ejemplo de un ataque SQL Injection para que estamos preparados.

Hapy coding!!…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *