Seguridad de aplicaciones web 2.0

2,882 views

Published on

Una presentacion sobre la seguridad web. Esta aplica a todo tipo de aplicaciones.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,882
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Seguridad de aplicaciones web 2.0

  1. 1. Seguridad en Aplicaciones Web 2.0<br />Pablo Víquez<br />Noviembre, 2009<br />
  2. 2. 2<br />Acerca de…<br />Pablo Viquez<br />SeniorDeveloper @ Schematic<br />Co-Fundador de la comunidad Costa Rica PHP<br />www.pabloviquez.com<br />@pabloviquez<br />
  3. 3. 3<br />Agenda<br /><ul><li> Web 2.0, ¿qué es?
  4. 4. Seguridad, ¿por qué?
  5. 5. Reglas básicas
  6. 6. Ataques y vulnerabilidades comunes
  7. 7. Ejemplos</li></li></ul><li>4<br />Web 2.0<br />
  8. 8. 5<br />Web 2.0<br />“El término “Web 2.0” es comúnmente asociado con aplicaciones web que facilitan interactivamente el intercambio de información, interoperabilidad, diseño centrado en el usuario y colaboración”<br />
  9. 9. 6<br />Web 2.0<br />"Yo creo que Web 2.0 es pura basura, ni siquiera nadie sabe que significa"<br />"I think Web 2.0 is of course a piece of jargon, nobody even knows what it means"<br />Tim Berners-Lee<br />
  10. 10. 7<br />Web 2.0<br />“No se refiere a un cambio técnico, sino a las maneras en que los desarrolladores y los usuarios hacen uso de las aplicaciones en la web”<br />
  11. 11. 8<br />Web 2.0<br />Crear software y distribuirlo<br />Crear servicios basados en información<br />
  12. 12. 9<br />
  13. 13. 10<br />Seguridad<br />
  14. 14. 11<br />"70% de los 100 sitios mas populares, han hospedado contenido malicioso ó han contenido redireccionamientospara víctimas de sitios legítimos a sitios maliciosos"<br />(Websense, 2009)<br />
  15. 15. 12<br />Seguridad<br />
  16. 16. 13<br />Reglas Básicas<br />nuncaconfíeen el usuario<br />filtre todo el input, limpie todo el output<br />evite las excusas!<br />piense como hacker!<br />deje que la seguridadsea parte de su diseño<br />
  17. 17. 14<br />Ataques y vulnerabilidades comunes<br />
  18. 18. 15<br />
  19. 19. 16<br />
  20. 20. 17<br />SQL Injection<br />Inserción de datos adicionales en un “string” que eventualmente será ejecutado en la base de datos<br />
  21. 21. SQL Injection :: Ejemplo<br />18<br />
  22. 22. SQL Injection :: Ejemplo<br />19<br />$_POST[‘usuario’] = usuario123$_POST[‘clave’] = 123456<br />Página de login<br />DB<br />
  23. 23. SQL Injection :: Ejemplo<br />$login=$_POST['login'];<br />$password=$_POST['password'];<br />$sql="SELECT * FROM user WHERE login = '$login‘ AND password = '$password'";<br />20<br />lo anterior dacomoresultado:<br />"SELECT * FROM user WHERE login = 'admin‘ AND password = '123456’";<br />
  24. 24. SQL Injection :: Ejemplo<br />21<br />
  25. 25. SQL Injection :: Ejemplo<br />22<br />SELECT * FROM user WHERE login = '$login'AND password = '$password'<br />lo anterior dacomoresultado:<br />SELECT * FROM user WHERE login = 'admin' AND password = '1' OR 1=1 OR ''=''<br />
  26. 26. 23<br />SQL Injection<br />Inyección de consultas<br />?val=(DELETE FROM table);<br />Recolección de datosarbitrarios<br />?id=column_name<br />Denial of Service<br />?val=(BENCHMARK(100000000, MD5(RAND()));<br />Modificación de Datos<br />?val=(UPDATE users SET is_admin=1);<br />
  27. 27. Filtrar la entrada del usuario.<br />addslashes("Admin’ or 1=1");<br />Usar las funciones específicas de la base de datos<br />mysqli_real_escape_string("Admin’ or 1=1");<br />Usarsentenciaspreparadas (prepared statements)<br />24<br />SQL_Injection::Soluciones<br />
  28. 28. 25<br />XSS<br />
  29. 29. XSS<br />26<br />
  30. 30. XSS<br />Consiste en inyectar código ejecutable en el navegador.<br />Este ataque puede ser llevado a cabo utilizando:<br />HTML<br />JavaScript<br />VBScript<br />ActiveX<br />Flash<br />Cualquier otra tecnología que ejecute el cliente<br />27<br />
  31. 31. XSS<br />28<br />
  32. 32. XSS<br />29<br />(link con contenido malicioso)<br />v<br />v<br />Víctima<br />Atacante<br />etc…<br />ejecuta contenido malicioso<br />Roba datos del usuario<br />Sito web<br />con vulnerabilidad<br />
  33. 33. XSS<br />30<br />
  34. 34. 31<br />
  35. 35. 32<br />XSS<br />http://www.apple.com/itunes/affiliates/download/?artistName=MSG1&thumbnailUrl=http://url.jpg&itmsUrl=http://www.url.com&albumName=MSG<br />
  36. 36. 33<br />
  37. 37. 34<br />
  38. 38. Stored XSS<br />35<br />pone contenido malicioso en el sitio<br />Accesa el sitio con el problema<br />v<br />v<br />Víctima<br />Atacante<br />ejecuta contenido malicioso y roba los datos del usuario<br />Sito web<br />con vulnerabilidad<br />
  39. 39. Stored XSS<br />36<br />}<br />
  40. 40. XSS – Robo de sesión<br />37<br />
  41. 41. XSS – Robo de claves<br />38<br />
  42. 42. XSS – Robo de claves<br />39<br />
  43. 43. XSS - Prevención<br />40<br />
  44. 44. XSS - FIEO<br />41<br />
  45. 45. XSS - FIEO<br />42<br />Hola Mundo&lt;script&gt;alert('Hola Mundo');&lt;/script&gt;<br />
  46. 46. XSS - FIEO<br />43<br />Hola Mundo&lt;script&gt;alert('Hola Mundo');&lt;/script&gt;<br />
  47. 47. 44<br />CSRF<br />
  48. 48. CSRF – Como funciona<br />45<br />
  49. 49. 46<br />“Cualquier aplicación que acepta pedidos HTTP (HTTP Request) de un usuario autenticado sin tener algún tipo de control para verificar que el pedido HTTP es único a la sesión del usuario, esta expuesto a un ataque.”<br />
  50. 50. CSRF – Ejemplos<br />47<br />Llena el formulario y envía un correo.<br />
  51. 51. CSRF – Ejemplos<br />48<br /><formmethod=“post”action=“email.php”><input type=“hidden”name=“para”value=“soporte@sitio.com” /> ….</form><br />
  52. 52. CSRF – Ejemplos<br />49<br />Atacante<br /><formmethod=“post”action=“email.php”><input type=“hidden”name=“para”value=“usr@dominio.com” /> …</form><br />
  53. 53. 50<br />CSRF::Soluciones<br />Token de solo 1 uso:<br />
  54. 54. CSRF::Soluciones<br />51<br />$_POST<br />¿Tiene un “token” en la sesión y es válido?<br />Atacante<br />Pedido denegado<br />
  55. 55. 52<br />AtaquesLógicos<br />
  56. 56. Ataquelógico – Ejemplos<br />53<br />
  57. 57. Ataquelógico – Ejemplos<br />54<br /><form>…<inputtype=“hidden”name=“total”value=“199.00” />…</form><br />
  58. 58. Ataquelógico – Ejemplos<br />55<br /><form>…<inputtype=“hidden”name=“total”value=“0” />…</form><br />
  59. 59. 56<br />Referencias<br />Open Web Application Security Project<br />http://www.owasp.org<br />Chris Shiflett<br />http://www.shiflett.orgGuia de Seguridad PHP<br />http://php.net/manual/en/security.intro.phpBlack Hat<br />http://www.blackhat.com<br />Yahoo Search<br />http://search.yahoo.com<br />Google Search<br />http://www.google.com<br />
  60. 60. 57<br />¡Gracias!<br />

×