La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Defensa contra ataques web comunes Isabel Gomez Miguel Jimenez

Presentaciones similares


Presentación del tema: "Defensa contra ataques web comunes Isabel Gomez Miguel Jimenez"— Transcripción de la presentación:

1 Defensa contra ataques web comunes Isabel Gomez Miguel Jimenez

2 Defensa Contra Ataques Securizar una Aplicación: Validación de Datos de Entrada Buffer Overrun Inyección SQL Cross-Site Scripting Robo de Sesión

3 Holística de la seguridad Servidor Web Servidor de Aplicaciones Servidor de BD FirewallFirewall Servidor Parches Servicios Protocolos Cuentas Ficheros y Directorios Shares Puertos Registro Auditoría y Logging Red Router Firewall Switch Aplicación Validación de INput Autenticación Autorización Gestión de Configuración Datos Sensibles Gestión de Sesiones Criptografía Manipulación de Parámetros Gestión de Excepciones Auditoría y Logging

4 Securizar la Aplicación Validación de Datos de Entrada AutentificaciónAutorización Gestión de Configuración Datos Sensibles Gestión de Sesiones Criptografía Manipulación de Parámetros Gestión de Excepciones Auditoría y Logging

5 Securizar la Aplicación Validación de Datos de Entrada Ataques posibles: Desbordamiento de buffer Inyección de código Inyección SQL Cross-Site Scripting (xss) Entrada de datos: Cookies, cabeceras, campos html, controles Viewstate,QueryString Servicios Web/Remoting/DCOM Datos de base de datos, ficheros o fuentes remotas Siempre dudar de su contenido!! Validación de datos en servidor

6 PUSH 0x PUSH [0x0A2EF4D9] CALL 0x0A3BA78C Validación de la entrada Buffer overruns void UnSafe (const char* datoSinValidar) { int otraVariableLocal; strcpy (variableLocal, datoSinValidar); } char variableLocal[4]; Stack char[4] int Return address 0x01 0x01 0x01 0x01 0x0A 0x3B 0xA4 0x29 0x00 0x14 0x5B 0xB1 0xDA 0xC1 0x42... datoSinValidar 0x x0A3BA429

7 Validación de la entrada Buffer overruns Causas más comunes Copia de cadenas Arrays Reserva de memoria insuficiente Defensas Utilizar código manejado Vigilar P/Invoke, código unsafe Usar con cuidado strcpy, memcpy Mejor equivalentes en strsafe.h Opción compilador C++: /GS

8 Validación de la entrada Inyección SQL Qué es? SqlConnection conn= new SqlConnection( server=localhost;Database=Northwind + user id=sa;password=pass*word;"); string sqlString="SELECT * FROM Orders WHERE + CustomerID='" + idCliente + "'"; SqlCommand cmd = new SqlCommand(sqlString, conn); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); //...

9 Validación de la entrada Inyección SQL SELECT * FROM Orders WHERE CustomerID=VINET' La gente buena introduce VINET SELECT * FROM Orders WHERE CustomerID=VINETOR 1=1 -- Los malos VINET OR 1=1 -- SELECT * FROM Orders WHERE CustomerID=VINET; DROP TABLE ORDERS -- Los malísimos VINET; DROP TABLE ORDERS -- SELECT * FROM Orders WHERE CustomerID= VINET;exec xp_cmdshell format C: VINET;exec xp_cmdshell format C:

10 Validación de la entrada Inyección SQL Utilizar comandos parametrizables Al menos minimizarlo Validar entrada en servidor Usar cuentas SQL restringidas No volcar mensajes de error string sqlString="SELECT * FROM Orders WHERE SqlCommand cmd = new SqlCommand(sqlString, conn); idCliente);

11 Inyección SQL

12 Validación de la entrada Cross-site scripting ¿Que es XSS? Un agujero de seguridad que permite al hacker ejecutar código script en un cliente web Dos entradas principales Contempladas (foros, s, librerías…) Ocultas (querystring, campos HTML…) Efectos habituales Modificación del contenido Envío de información Robo de sesión

13 Validación de la entrada Anatomía de una ataque XSS Hacker Victima Sitio Web 1.Envia correo al usuario con link a un sitio inocente 2. El usuario visita el sitio web 3. En el contexto del usuario, el sitio envia datos a traves de un post malformado

14 Validación de la entrada Tipos de Cross-site scripting Tipo 0 – Local ó DOM-based Un script local accede a parametros request de la URL y los utiliza para construir código script. Tipo 1 – No Persistente ó Reflejada Se utilizan l os datos de entrada de formularios para construir scripts, permitiendo la inyección de código. Tipo 2 – Persistente ó Segundo Orden Es la más poderosa. Los datos se almacenan en una bbdd y posteriormente se muestran a los usuarios, inyectando el código continuamente.

15 Cross-site scripting

16 Validación de la entrada Protección contra Cross-site scripting Validar y limpiar cualquier entrada Vigilar, … Especialmente la que es mostrada después Utilizar HttpOnly en IE6.1 Aprovechar ASP.NET HTMLEncode para limpiar ValidateRequest para validar todas las entradas

17 Autenticación falseable Robos de passwords Nunca enviar por canales inseguros Cuidado con RPC, Remoting Proteger su almacenamiento Establecer políticas Utilizar hash con salt Password SHA1CryptoServiceProvider.ComputeHash Salt Hash

18 Autenticación falseable Modificación de ticket ASP.NET utiliza tickets en forma de URL o cookie Robo de cookie Cuidado con XSS Usar RequireSSL y !Persistent Modificación de cookie Si contiene información del usuario Utilizar MAC

19 Cookie Tampering

20 Sumario La gran mayoría de las aplicaciones tienen agujeros de seguridad Reglas de protección Validación de entrada Evitar SQL dinámico Aplicar Encoding a toda la salida Ejecutar con los mínimos privilegios Cifrar los secretos (connstr, passs, etc.) Minimizar la superficie de exposición Y si fallamos, hacerlo de modo privado

21 Próximas acciones 8 Junio Evento Windows Workflow Mad.nug 13 Junio. Seguridad Práctica para Empresas Hacking Web Sites

22 Isabel Gomez - Microsoft Miguel Jiménez – Ilitia / MAD.NUG


Descargar ppt "Defensa contra ataques web comunes Isabel Gomez Miguel Jimenez"

Presentaciones similares


Anuncios Google