0



En el día a día de un programador Web, nos vienen a la cabeza el cómo mejorar nuestra aplicación. No siempre la mejora de una aplicación se basa en una mejora visual y/o de nuevas funcionalidades, sino de una mejora a nivel de seguridad.

Ante este gran dilema, la seguridad web, nos planteamos una serie de mecanismos que nos permitan hacer, de nuestra aplicación, un lugar mejor. Seguro que a la mayoría no nos gustaría ver un día, al entrar en nuestra aplicación Web, un “bonito” mensaje del tipo “This Web has been hacked by…”. Hay diferentes tipos de ataques a una página Web y cada uno de ello se puede solventar de forma diversa. En este caso solo hablaré de los ataques al servidor (aunque la mejor palabra para definirlo sería vulnerabilidades del software).

Las diferentes vulnerabilidades Web, entre otras, son:

1. Cross Site Scripting (XSS). Básicamente se basa en aplicaciones que permite ejecutar código de scripting (javascript, entre otros) y es causado por la no verificación de los valores introducidos por el usuario. XSS es un tipo de inyección HTML y permite a una persona mal intencionada ejecutar código en el navegador de la víctima y pudiendo insertar contenido nefasto, realizar ataques de phising, robar las sesiones de usuario,… entre otros. Generalmente, Cross Site Scripting, se suele utilizar JavaScript para esta finalidad, pero en realidad, cualquier lenguaje de script puede ser utilizado.

2. Inyecciones de código. Se basa en el envío de datos por parte del cliente a la aplicación con contenido malicioso y  utilizados directamente, por ejemplo, en sentencias SQL.

El típico caso de ataque de inyección es SQL Inyection, aunque también tenemos HTML Inyection (como el XSS), XPath, XML… Al igual que comentaba en el punto anterior, todos estos ataques suele producirse cuando el desarrollador confía demasiado en el usuario y no filtra correctamente todos los puntos de entrada de datos.

3. Ejecución maliciosa de código. Esta vulnerabilidad se basa en el uso de una variable procedente del usuario para incluir en nuestro código un fichero determinado.

Un claro ejemplo de ello, son aquellas aplicaciones que mediante el uso de un parámetro específico en la URI, hacen la inclusión de ese “módulo”.

www.sergiquinonero.net/index.php?controlador=inicio donde en inicio podríamos encontrar algo tal que include $_GET['controlador'] .  ‘.php’;

4. Cross Site Request Forgery (CSRF). Este tipo de ataque permite a una página mal intencionada, al ser visitado por una víctima, ejecutar una llamada Web a otra página (susceptible al usuario) y realizar una acción determinada sobre el site víctima.

Imaginaos qué, en una Web A tenemos una imagen oculta, cuya fuente de imagen sea http://www.facebook.com/profile/modify-mail/correo-malintencionado@miserver.com (obivamente esto es un ejemplo IRREAL).El usuario que visitase esa página Web A, si está identificado en facebook (en este caso) estaría permitiendo a la Web malintencionada, modificar su e-mail sin que éste se diera cuenta.

5. Fuga de información o Error en el manejo de errores. Esto suele ocurrir cuando nuestro servidor muestra los errores de programación (Fatal Error, Warning, Notices) que dan al usuario mal intencionado información de cómo es nuestra estructura permitiéndole utilizar otro tipo de vulnerabilidades para hacerse con el control total o parcial de nuestro sitio.

6. Robo de Sesión. Cuando un usuario inicia sesión en una página Web, normalmente, ese sitió dejará una galletita (cookie) en el ordenador del usuario con un session id que identificará ese usuario con esa máquina. El servidor también almacena ese ID junto con información del usuario. Como no es frecuente el uso de navegación segura (mediante HTTPS), cualquier persona mal intencionada (y con los medios) podría obtener esa información y suplantar a la víctima (creando una cookie con esa información).

No son todos estos puntos los únicos que hay que tomar en cuenta para prevenir ataques en páginas y aplicaciones Web,

Bueno  hago este pos  estaré publicando algunas cosas importantes sobre sistemas de codificación como binario base64 etc  así que pendientes un saludo :D

Publicar un comentario

 
Top