Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas

Post on 17-Dec-2014

6.624 views 0 download

description

Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas. XSS Inyección SQL Gestión de sesiones Gestión de la autorización CRSF

Transcript of Introducción a las vulnerabilidades Web: cómo detectarlas y evitarlas

Vulnerabilidades Web Cómo detectarlas y evitarlas

Jose Luis Chica · @bufferovercat

• Conocer vulnerabilidades web más

comunes y peligrosas.

• Dirigido a desarrolladores y sysadmin.

• Explicación vulnerabilidad.

• Demo (si no explota).

• Cómo evitarlas.

• Ing. Técnico Informática de Gestión por

la UMU.

• Security Engineer en S2 Grupo.

• Miembro del Centro de Seguridad TIC de

la Comunidad Valenciana (CSIRT-cv).

• Asiduo de las MLPs ;)

• Boletines, rss de fabricantes.

• Noticias diarias.

• Cursos online gratuitos, guías, campañas

de concienciación.

• Informes de phising. ¡Mándanos!

• twitter: @csirtcv

• fb: www.facebook.com/csirtcv

• 97554 vulnerabilidades.

• 50% vulnerabilidades graves.

• 13% sistemas comprometidos.

¿No da miedo?

• TODAS las aplicaciones tienen bugs

• Si tienen bugs, pueden tener vulns.

• Vulnerabilidad web:

• Pérdidas económicas.

• Pérdida reputacional.

• ¿Os acordáis de Sony...?

• Código interpretado a través de entrada

de usuario.

• Permite robo de sesión, redirección,

ejecutar código malicioso, "BeEF“.

• Reflejado: ejecución a través de URL,

mediante ingeniería social.

• Almacenado: el código js se almacena

en la aplicación.

¡DEMO!

Código fuente:

HTML resultante:

Ataque:

(String) page += "<input name='creditcard' type='TEXT‘

value='" + request.getParameter("CC") + "'>“;

<input name='creditcard' type='TEXT' value='121241242421434‘>

http://www.example.com/buyItem.php?CC="'><script>alert("XSS")

;</script>‘”

• Inserción a través de parámetros de

entrada de sententencias arbitrarias a

la BBDD de la aplicación.

http://www.asdf.com/item.php?id=123 or 1=1

http://www.asdf.com/item.php?id=123; DROP TABLE

items;--

http://www.asdf.com/item.php?id=123 UNION SELECT

user,password FROM users;--

• Saltarse la autenticación.

• Volcar la BBDD.

• Modificar/borrar la BBDD.

• Ejecutar comandos del sistema.

¡DEMO!

• Riesgo: robo de cookie de sesión.

• Con la cookie, un atacante podría

hacerse pasar por la víctima.

• ¿Mi web tiene mecanismos para evitar el

robo?

• Caducidad de la sesión.

• Timeout por inactividad.

• Cierre de sesión, destrucción cookie.

• Renovación de cookie al hacer login.

• Limitación de sesiones concurrentes.

• Cookie en la URL.

• Cookie impredecible.

• Resistente a modificaciones.

• Transmitidas por canal seguro.

• HttpOnly

• secure

Ejemplo

http://ejemplo.com/usuario.php;jsessi

onid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV

• Acceso a urls, o recursos del que no se

tiene permisos.

• Ejemplos:

• Edición de contenido.

• Sección privada de usuario.

Privilegios verticales

http://ejemplo.com/index.php?idNoticia=1&accion=ver

http://ejemplo.com/index.php?idNoticia=1&accion=editar

Privilegios horizontales

http://ejemplo.com/index.php?privmsg=140

http://ejemplo.com/index.php?privmsg=141

¿Qué hacer?

• Comprobación de control de acceso en cada

recurso.

• ¿Ha iniciado sesión?

• ¿La sesión tiene permisos suficientes?

• Posibilidad de forzar a un usuario a realizar

una acción.

• Normalmente, en formularios.

• Se engaña al usuario, para que acceda a una

url maliciosa.

¡D

EM

O!

• Credenciales enviadas por canal

inseguro.

• Configuración del server insegura.

• Software vulnerable.

• Almacenamiento no seguro de contenido

sensible.

• Proyecto OWASP:

• Desarrollo seguro.

• Revisión de código.

• Guía de pruebas.

¡GRACIAS!

www.securityartwork.es

@bufferovercat