1 / 22

Defensa contra ataques web comunes

Defensa contra ataques web comunes. Isabel Gomez Isabelg@microsoft.com Miguel Jimenez miguel@ilitia.com http://blogs.clearscreen.com/migs. 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.

lisle
Download Presentation

Defensa contra ataques web comunes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Defensa contra ataques web comunes Isabel Gomez Isabelg@microsoft.com Miguel Jimenez miguel@ilitia.com http://blogs.clearscreen.com/migs

  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. 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 Firewall Servidor Web Firewall Servidor de Aplicaciones Servidor de BD Holística de la seguridad Red Router Firewall Switch Servidor Parches ServiciosProtocolos Cuentas Ficheros y Directorios Shares Puertos Registro Auditoría y Logging

  4. Securizar la Aplicación • Validación de Datos de Entrada • Autentificació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

  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. datoSinValidar 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x0A 0x3B 0xA4 0x29 0x00 0x14 0x5B 0xB1 0xDA 0xC1 0x42 ... PUSH 0x00001234 PUSH [0x0A2EF4D9] CALL 0x0A3BA78C Validación de la entradaBuffer overruns Stack void UnSafe (const char* datoSinValidar) char[4] 0x01010101 { char variableLocal[4]; 0x01010101 int int otraVariableLocal; Return address 0x0A3BA429 strcpy (variableLocal, datoSinValidar); }

  7. Validación de la entradaBuffer 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. Los malos VINET’ OR 1=1 -- Los @*^#VINET’;exec xp_cmdshell ‘format C: Los malísimos VINET’; DROP TABLE ORDERS -- SELECT * FROM Orders WHERE CustomerID=‘VINET‘OR 1=1 --’ SELECT * FROM Orders WHERE CustomerID= ‘VINET‘;exec xp_cmdshell ‘format C:’ SELECT * FROM Orders WHERE CustomerID=‘VINET‘; DROP TABLE ORDERS --’ Validación de la entrada Inyección SQL La gente buena introduce VINET SELECT * FROM Orders WHERE CustomerID=‘VINET'

  10. Validación de la entradaInyecció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 CustomerID=@custID"; SqlCommand cmd = new SqlCommand(sqlString, conn); cmd.Parameters.Add("@custID", idCliente);

  11. Inyección SQL

  12. Validación de la entradaCross-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, emails, librerías…) • Ocultas (querystring, campos HTML…) • Efectos habituales • Modificación del contenido • Envío de información • Robo de sesión

  13. 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 Validación de la entradaAnatomía de una ataque XSS Victima Hacker Sitio Web

  14. Validación de la entradaTipos 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 entradaProtección contra Cross-site scripting • Validar y limpiar cualquier entrada • Vigilar <script>, <object>… • 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 falseableRobos de passwords • Nunca enviar por canales inseguros • Cuidado con RPC, Remoting • Proteger su almacenamiento • Establecer políticas • Utilizar hash con salt Password Salt SHA1CryptoServiceProvider.ComputeHash Hash

  18. Autenticación falseableModificació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, pass’s, 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 • http://www.microsoft.com/spain/technet

  22. Isabel Gomez - Microsoft isabelg@microsoft.com Miguel Jiménez – Ilitia / MAD.NUG miguel@ilitia.com

More Related