Curso basicoseguridadweb slideshare3

Embed Size (px)

DESCRIPTION

Curso básico seguridad web 3: Vulnerabilidades web

Citation preview

  • 1. SEGURIDAD Y APLICACIONES WEB Licencia Creative Commons Esta obra esta distribuida bajo una licencia de:
    • Reconocimiento (Attribution): En cualquier explotacin de la obra autorizada por la licencia har falta reconocer la autora.
  • 2. No Comercial (Non commercial): La explotacin de la obra queda limitada a usos no comerciales.

3. Compartir Igual (Share alike): La explotacin autorizada incluye la creacin de obras derivadas siempre que mantengan la misma licencia al ser divulgadas. 4. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Vulnerabilidades WEB 5. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web 6. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web SQL Injection 7. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Vamos a explicar un poco ms en profundidad algunas de las vulnerabilidades web ms comunes y como prevenirlas

  • Sql Injection

8. XSS

    • XSRF
  • Abuso de funcionalidad

9. Fuerza bruta 10. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web SQL INJECTION Es un mtodo de infiltracin de cdigo que se vale de una vulnerabilidad informtica presente en una aplicacin en el nivel de validacin de las entradas para ejecutar querys contra la base de datos de la aplicacin. 11. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Ejemplo cdigo vulnerable (Username y password se recogen de un formulario en pantalla)

conn = pool.getConnection( ); String sql = "select * from user where username='" + username +"' and password='" + password + "'"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) { loggedIn = true; out.println("Successfully logged in"); } else { out.println("Username and/or password not recognized"); } 12. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Ataque:

Username == ' OR '1'='1 Password vacio La sentencia SQL que se ejecuta en la BD quedara: select * from user where username='' OR '1'='1' and password=' ' Esta sentencia devolver todos los datos de la tablay la aplicacin nos permitir ingresar en el sistema. 13. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Nos podemos encontrar varios escenarios en los cuales explotar esta vulnerabilidad:

  • La aplicacin presenta mensajes de error de la BD

14. La aplicacin presenta informacin en pantalla devuelta por la query 15. La aplicacin presenta una pantalla de error genrica cuando la query falla 16. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • La aplicacin presenta mensajes de error de la BD

17. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • La aplicacin presenta informacin en pantalla devuelta por la query

18. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • La aplicacin presenta una pantalla de error genrica cuando la query falla

19. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Porque son importantes estos tres escenarios? Nivel de informacin que nos dan y facilidad a la hora de extraerla

  • Errores en pantalla: Versiones de Bd y en que estamos fallando al componer la query

20. Resultados de la query: Nos permiten obtener de vuelta los resultados de la query 21. Pantalla de error genrica: Nos fuerza a realizar Blind SQL Injection (Inyeccin SQL ciega) 22. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Que podemos conseguir al explotar una vulnerabilidad de SQLi en una aplicacin?

  • Mnimo:
    • Consultar, modificar o insertar los datos en las tabla sobre la que se realiza la query
  • Si aadimos permisos mal configurados
    • Consulta, modificacin e insercin en todas las tablas a las que pueda acceder el usuario de BD (usuarios del sistema incluidas)
  • 23. Ejecucin de exploits sobre la BD que nos permita realizar una escalada de privilegios

24. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como evitar los ataques de SQLi?

  • ValidarTODASlas entradas que provengan del usuario.

25. En java utilizar la clase PreparedStatement. 26. El usuario de BD configurado en el servidor debe tener los mnimos privilegios posibles. 27. Controlar todos los errores que se puedan devolver presentando en todos los casos una pantalla de error genrica que no de ninguna informacin sobre el sistemay/o error. 28. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Validar TODAS las entradas.
    • La validacin se debe realizar en el servidor
  • 29. Javascript NO SIRVE para securizar la entrada

30. Da igual que los datos vayan por POST o por GET 31. Se pueden inyectar TODOS los datos que viajan del navegador al servidor. 32. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web JavaScript NO APORTA NINGUNA PROTECCIN 33. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Los mtodos recomendados para la prevencin de sql injectin para cualquier lenguaje de programacin son:
    • Uso de queries parametrizadas o Use de procedimientos almacenados
  • 34. Escapar la entrada del usuario

35. Usuario de BD de la aplicacin con mnimos privilegios 36. Lista blanca de validacin

  • Los datos solo pueden ser del tipo esperado (string, date, ...)

37. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Se deben aplicar todos estos mtodos Estas polticas se implementarn SIEMPRE del lado servidor 38. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • En general para todos los lenguajes existen recomendaciones sobre como protegernos frente a Sqli
    • En java:
    • Usar la clase PreparedStatement
  • 39. Hibernate
  • CreateQuery con bind parameters

En PHP

  • db->prepare

40. sql->bind_param 41. mysql_real_escape_string para mysql 42. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Ejemplo query con java:

String custname = request.getParameter("customerName"); // This should REALLY be validated too // perform input validation to detect attacks String query = "SELECT account_balance FROM user_data WHEREuser_name = ?"; PreparedStatementpstmt = connection.prepareStatement( query ); pstmt.setString( 1, custname);ResultSet results = pstmt.executeQuery( ); 43. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Algunas referencias en la web: http://es.wikipedia.org/wiki/Inyeccin_SQL https://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API 44. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web No debemos olvidar que el simple hecho de seguir estas recomendaciones no aporta una seguridad absoluta! Se debe codificar el acceso a base de datos con la seguridad en mente. 45. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web XSS Cross Site Scripting 46. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Cross Site Scripting (XSS) Vulnerabilidad que permite inyectar scripts o contenido en pginas web.

  • Tipos:
    • No persistente
  • 47. Persistente

48. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Se da cuando se utiliza la entrada del usuario para componer la respuesta html que devolver el servidor.
    • Si la entrada del usuario se guarda en BD y se utiliza posteriormente para componer la salida html hacia el cliente a esta vulnerabilidad se le denominaXSS persistente
  • 49. Si no es as la denominarXSS no persistente

50. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • XSS No Persistente
    • El ejemplo ms popular actualmente el de la pgina web de la presidencia europea y mr. Bean
  • 51. Http ://www.eu2010.es/en/resultadoBusqueda.html?query= %3Cscript%3Edocument.write%28%27%3Cimg%20src%3D%22http%3A%2F%2Fblog.tmcnet.com%2Fblog%2Ftom-keating%2Fimages%2Fmr-bean.jpg%22%20%2F%3E%27%29%3C%2Fscript%3E& index=buscadorGeneral_en

52. 53. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • XSS Persistente
    • Ms peligroso que el anterior, sobre todo porque es ms difcilmente detectable (no se ver en la url) y es ms probable que el nmero de afectados sea mayor.
  • 54. Sucede cuando la inyeccin realizada por el atacante es guardada en el servidor y usada para componer la pgina atacada cada vez que es solicitada por algn usuario.

55. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Que podemos conseguir al explotar una vulnerabilidad de XSS?

  • Este tipo de vulnerabilidad afecta principalmente al usuario de la aplicacin web

56. Se pueden robar credenciales de los servicios en los que este acreditado el usuario en el momento de ejecucin del script (cookies de sesin , ) 57. Tambin se pueden ejecutar exploits que aprovechen vulnerabilidades del navegador pudiendo llegar a tener el control sobre el equipo de la vctima. 58. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como evitar los ataques de XSS?

  • ValidarTODASlasentradasque provengan del usuario.

59. ValidarTODASlassalidasde datos de la aplicacin que provengan de datos introducidos anteriormente por un usuario 60. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Validar TODAS las entradas.
    • La validacin se debe realizar en el servidor
  • 61. Javascript NO SIRVE para securizar la entrada

62. Da igual que los datos vayan por POST o por GET 63. Se pueden inyectar TODOS los datos que viajan del navegador al servidor. 64. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Algunas recomendaciones

    • Lista blanca
    • Cada tipo de dato debe contener datos del tipo que deben: (Alfanumericos, Alfabeticos, Fecha, Numero de documento, nombre de archivo,...)

Sanear tanto la entrada y como la salida de datos

  • Remover etiquetas html

Escapar la entrada antes de introducirla en BD 65. Escapar la salida antes de devolverla al cliente 66. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

    • Lista negra. Ejemplo Java
    • La idea es sustituir aquellas cadenas que pueden suponer un peligro por caracteres inocuos
  • 67. String description = request.getParameter("description");

68. description = description.replaceAll(""); 69. description = description.replaceAll("eval((.*))", ""); 70. description = description.replaceAll("["'][s]*((?i)javascript):(.*)["']", """"); 71. description = description.replaceAll("((?i)script)", ""); 72. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Enlaces tiles:

  • Recomendaciones:
    • https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
  • 73. http://en.wikipedia.org/wiki/Cross-site_scripting
  • Libreras que aportan funcionalidad antiXSS
    • https://www.owasp.org/index.php/ESAPI
  • 74. http://wpl.codeplex.com/

75. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web No debemos olvidar que el simple hecho de seguir estas recomendaciones no aporta una seguridad absoluta! Se debe codificar la entrada y salida de datos de la aplicacin teniendo la seguridad en mente 76. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web XSRF Cross Site Request Forgery 77. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Cross Site Request Forgery (XSRF) Consiste en forzar al navegador web validado de una vctima a enviar una peticin a una aplicacin web vulnerable, la cual entonces realiza la accin elegida a travs de la vctima.Se entiende que todo esto sin el consentimiento ni conocimiento de dicha vctima 78. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Ejemplo: Navegador con dos pestaas abiertas:
    • En una de ella estamos autenticados en bank.example.com con nuestras credenciales
  • 79. En la otra estamos navegando por un site que contiene el siguiente cdigo:
  • De esta forma se realiza la transferencia utilizando la sesin ya iniciada en la otra pestaa.

80. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Que se puede conseguir al explotar una vulnerabilidad XSRF? Realizar cualquier accin que no requiera validacin del usuario en las aplicaciones web en que este autenticado en dicho momento. 81. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como evitar los ataques de XSRF?

  • Uso de tokens segn el patrn Synchronizer Token Pattern (se genera un token aleatorio para cada formulario/sesin que se devuelve, este token tendr que venir de vuelta con la solicitud.

82. Configurar tiempos de expiracin del token razonablemente cortos. 83. Por parte del usuario:

    • Abandonar la sesin realizando logout,
  • 84. No tener varias pestaas abiertas en el navegador.

85. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Abuso de funcionalidad 86. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Es una tcnica que usa las funcionalidades de la aplicacin web para atacarla aplicacin, al usuario de la misma o atacar a otros. 87. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Ejemplo:
    • Funcionalidad: Login
    • La aplicacin informa si es el usuario o la clave lo que esta mal

Mediante fuerza bruta sobre el usuario se puede conseguir una lista de usuarios validos del sistema 88. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Que se puede llegar a conseguir?

  • Al ser un ataque aprovecha la funcionalidad de la aplicacin no se puede describir la totalidad de posibilidades ya que dependern de las funcionalidades de la aplicacin.

89. Algo habitual es poder conseguir nombre de usuarios o direcciones de correo validas, una vez conseguidas las mismas se pueden lanzar ataques de fuerza bruta sobre las claves. 90. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como evitar los ataques de abuso de funcionalidad?

  • Al disear una aplicacin se debe de tener en cuenta la seguridad de la misma y el mal uso que se podra realizar de sus funcionalidades para prevenirlas desde el mismo momento del diseo.

91. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Fuerza bruta 92. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Ataque realizado generalmente sobre las claves de un sistema. Consiste en probar todas las combinaciones posibles de clave. Usualmente se usa combinado con ataques de diccionario. Ataque de diccionario:

  • Ataque de fuerza bruta donde se prueban todas las palabras contenidas en un diccionario o variaciones sobre las mismas.

93. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Que se puede conseguir con este sistema? Acceder a cualquier servicio cuya seguridad depende nicamente del conocimiento de la contrasea:

  • Usuario de un sistema operativo.

94. Clave wifi (wpa y wep) 95. Usuario de una aplicacin web 96. Contrasea de un archivo cifrado 97. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Es efectivo este sistema? Bastante: Las claves suelenser muy cortas y predecibles 98. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como evitar los ataques de fuerza bruta? Seguir una poltica robusta de generacin, renovacin y almacenamiento de contraseas.

    • Ms de ocho caracteres
  • 99. Maysculas, minsculas, nmeros, caracteres especiales

100. No basada en diccionario ni en datos fcilmente predecibles 101. Cambiarlas peridicamente 102. Usar algn software quenos permita gestionarlas (keepass) 103. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como evitar los ataques de fuerza bruta?

  • En el diseo de aplicaciones
    • Obligar a seguir pautas de passwords seguras
  • 104. Inhabilitar cuentas tras n intentos fallidos

105. Introducir un retardo variable tras cada fallo al intentar introducir la contrasea 106. Uso de Captchas para dificultar la tarea del software de fuerza bruta

  • Digo dificultar y no impedir ya que ya existe software que se salta de manera bastante eficiente los captchas

107. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web DOS Denial Of Service Denegacin de servicio 108. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Es un ataque contra la disponibilidad de la aplicacinConsiste en explotar alguna vulnerabilidad de la aplicacin o servidor para hacer que dicha aplicacin no este disponible para los usuarios 109. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web

  • Existen diversas tcnicas DOS conocidas. Algunas de ellas son:
    • SYN Flood
    • Se realiza en el nivel TCP/IP enviando multitud de paquetes solicitando conexin pudiendo o no falsear la ip de origen.
  • 110. La idea subyacente es conseguir ocupar todas las conexiones disponibles del servidor dejndolos a la espera de una comunicacin que no ser establecida

Tear Drops attacks

  • Consiste en enviar paquetes IP malformados. Este ataque explotaba una vulnerabilidad en el tratamiento de la pila IP en diversos so's

111. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web La idea subyacente es conseguir agotar con peticionesespeciales alguno de los recursos de los cuales dispone el servidor (memoria, disco, procesador, ) de tal forma que dicho servidor no pueda atender al resto de usuarios. Dada la potencia de los servidores frente a la potencia disponible para un nico atacante el ataque debe ser realizado aprovechando alguna vulnerabilidad del lado servidor. 112. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web En aplicaciones web:

  • Cuando diseamos aplicaciones web donde alguna de sus funcionalidades consume grandes cantidades de recursos de servidor se tienen que tener en cuenta este tipo de ataques ya que pueden ser utilizados como vector para un DOS

113. Ejemplo:

    • Querys pesadas
  • 114. Guardar ficheros que enva el usuario

115. . 116. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web DDOS Distributed Denial Of Service DOS distribuido 117. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web El ataque tiene la misma base tcnica que el DOS.La nica diferencia es que se ejecuta dicho ataque DOS desde un numero grande de equipos facilitando el xito del ataque 118. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Cuando el nmero de atacantes distribuidos es muy grande, por ejemplo, 1 milln de equipos no tiene porque ser necesaria la explotacin de una vulnerabilidad para que tenga xito. El simple acto de solicitar una pgina de un servidor web de manera rpida y sostenida por un nmero elevado de atacantes dejar indisponible dicho servidor para el resto de usuarios legtimos y en determinados casos podra producir su cada alargando consecuentemente su indisponibilidad 119. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Algunas formas demitigareste tipo de ataques pero la complejidad y el coste de los mismos suele ser alto. Por ejemplo:

  • Contar en la red con equipos IPS (Intrude Prevention System) esto es sistemas que analicen el trfico hacia el servidor y que en base a reglas (ms de 10 peticiones/segundo desde una misma IP) bloqueen el trfico desde dicha IP.

120. SEGURIDAD Y APLICACIONES WEB Vulnerabilidades Web Como hemos visto es importante tener en cuenta la seguridad tanto en la creacin aplicaciones web ya que se pueden crear involuntariamente agujeros que afecten a la seguridad de toda la organizacin. El mejor consejo:Tener la seguridad tan en cuenta como se puedan tener el rendimiento o la funcionalidad de una aplicacin.