Introducción a las vulnerabilidades web

1,503
-1

Published on

Charla de introducción a las vulnerabilidades web para el UNI Encounter 2013 organizado por UNI Eibar-Ermua.

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

  • Be the first to like this

No Downloads
Views
Total Views
1,503
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introducción a las vulnerabilidades web

  1. 1. UNI Encounter 2013Eibar-ErmuaPablo Garaizar SagarminagaUniversidad de DeustoINTRODUCCIÓN A LASVULNERABILIDADES WEB
  2. 2. ¿De qué vamos a hablar?● OWASP Top 10, 2013 (release candidate).● A1 - Injections● A2 - Broken Authentication and Session Management● A3 - Cross-Site Scripting (XSS)● …● Cómo aprender seguridad web.● HTML5 y CSS3: ataques novedosos.
  3. 3. OWASPThe Open Web Application Security Projecthttps://www.owasp.org/index.php/Main_Page
  4. 4. OWASP Top 10, 2013(release candidate)
  5. 5. A1 - InjectionSQL, OS, and LDAP injectionshttps://www.owasp.org/index.php/Top_10_2013-A1
  6. 6. SQL InjectionHa ido evolucionando mucho con los años● 1998 rain.forest.puppy, "NT Web Technology Vulnerabilities". Phrack Magazine Vol.8, Issue 54.● 1999 rain forest puppy, "How I Hacked PacketStorm. A look at hacking wwwthreadsvia SQL". Advisory RFP2K01, rfp.labs.● 2001 David Litchfield, "Web Application Disassembly with ODBC Error Messages",NGS Software.● 2002 Chrish Anley, "Advanced SQL Injection", "(more) Advanced SQL Injection",NGS Software.● 2002 Cesar Cerrudo, "Manipulating Microsoft SQL Server using SQL Injection".Application Security.● 2003 Kevin Spett, "Blind SQL Injection", Spi Dynamics.● 2003 Ofer Maor, Amichai Shulman, "Blindfolded SQL Injection", Imperva.
  7. 7. SQL InjectionHa ido evolucionando mucho con los años● 2004 Ofer Maor, Amichai Shulman, "SQL Injection Signatures Evasion", Imperva.● 2004 Cameron Hotchkies, "Blind SQL Injection Automation Techniques", BlackHatConferences.● 2005 David Litchfield, "Data-mining with SQL Injection and Inference", NGS Software.● 2007 David Litchfield, "Cursor Injection", NGS Software.● 2008 David Litchfield, "Lateral SQL Injection: A new Class of Vulnerability in Oracle", NGSSoftware.● 2008 Chema Alonso, José Parada. "Time-Based Blind SQL Injection using heavy queries: Apractical approach for MS SQL Server, MS Access, Oracle and MySQL databases andMarathon Tool". Informática64, Microsoft.● 2009 Daniel Kachakil, "Select for XML SQL Injection. Fast data extraction using SQLinjection and XML statements", (dani@kachakil.com)● ...
  8. 8. SQL InjectionPor una comilla de nada...sql = "SELECT * FROM users WHERE user = " + userName + ";";userName -> or 1=1SELECT * FROM users WHERE user = OR 1=1;userName -> ;DROP TABLE users;--SELECT * FROM users WHERE user = ;DROP TABLE users;--userName -> ;SELECT * FROM data WHERE name LIKE %SELECT * FROM users WHERE user = ;SELECT * FROM data WHERE nameLIKE %;
  9. 9. SQL InjectionPor una comilla de nada...http://es.xkcd.com/strips/exploits-de-una-madre/
  10. 10. DEMOphpBB2 modificado
  11. 11. SQL InjectionCampos sin comillas (numéricos):sql = "SELECT * FROM users WHERE id = " + userID + ";";userID -> 1 OR 1=1SELECT * FROM users WHERE id = 1 OR 1=1;userID -> 1;DROP TABLE usersSELECT * FROM users WHERE id = 1;DROP TABLE users;userID -> 1; SELECT * FROM data WHERE name LIKE %SELECT * FROM users WHERE id = 1;SELECT * FROM data WHERE nameLIKE %;
  12. 12. SQL InjectionA veces no se sabe el número de campos en la tabla: usamos mensajes de errorsql = "SELECT * FROM users WHERE user = " + userName + ";";userName -> HAVING 1=1--SELECT * FROM users WHERE user = HAVING 1=1--;userName -> GROUP BY campo1 HAVING 1=1--SELECT * FROM users WHERE user = GROUP BY campo1 HAVING 1=1--;userName -> GROUP BY campo1, campo2 HAVING 1=1--SELECT * FROM users WHERE user = GROUP BY campo1, campo2 HAVING1=1--;
  13. 13. SQL InjectionSi no hay mensajes de error, Blind SQL Injection● Si no hay error, se muestra la página normal.● http://myblog.com/post.asp?id=33 AND 1=1● SELECT * FROM posts WHERE id = 33 AND 1=1● Si hay error, se muestra otra página.● http://myblog.com/post.asp?id=33 AND 1=0● SELECT * FROM posts WHERE id = 33 AND 1=0● Google Hacking:– inurl:"php?id="– inurl:"asp?id="
  14. 14. DEMOReto hacking de El lado del mal
  15. 15. SQL InjectionBlind SQL Injection, herramientas● SQLbfTools:– http://www.reversing.org/node/view/11● ./mysqlbf.exe "http://web/vulnerable.php?ID=3" "now()""word"● SQL Ninja:– http://sqlninja.sourceforge.net/sqlninjademo1.html● Absinthe:– http://www.0x90.org/releases/absinthe/download.php
  16. 16. SQL InjectionPara practicar, retos hacking de El lado del mal (Informatica64)● Reto 1:– http://www.informatica64.com/retohacking● Reto 2:– http://retohacking2.elladodelmal.com● Reto 3:– http://retohacking3.elladodelmal.com● Reto 4:– http://retohacking4.elladodelmal.com● ...
  17. 17. A2 - Broken Authentication and Session ManagementCompromise passwords, keys, session tokens, etc.https://www.owasp.org/index.php/Top_10_2013-A2
  18. 18. DEMOAutenticación con Flash o Java local
  19. 19. A3 - Cross-Site Scripting (XSS)Allows attackers to execute scripts in the victim’s browserhttps://www.owasp.org/index.php/Top_10_2013-A3
  20. 20. Cross-Site Scripting (XSS)Diferentes tipos y alcances● Tipo 0: Basado en DOM.– Una página maliciosa abre una página local con permisos de ZonaLocal y ejecuta código con esas credenciales.– Típicamente en phising o SPAM.● Tipo 1: No persistente.– El más común, necesita Ingeniería Social para explotarse.– Típicamente en webs de búsquedas, se muestra a su vez la cadenaconsultada (si tiene código, será ejecutado).● Tipo 2: Persistente.– El código está almacenado en una BD, fichero, o similar.– No requiere mucha Ingeniería Social para que la víctima lo ejecute.– Típicamente en foros o similares.
  21. 21. Cross-Site Scripting (XSS)Técnicas de evasión de filtros● Evitar espacios.● Listas negras de tags:– <scr<script>ipt>● Codificación alternativa:– <IMGSRC=&#0000106&#0000097&#0000118&#0000097&#0000115...>● Strings con caracteres nulos:– perl -e print "<SCR0IPT>alert("XSS")</SCR0IPT>"; >out● XSS en Flash:– <EMBED SRC="http://ha.ckers.org/xss.swf"AllowScriptAccess="always"></EMBED>
  22. 22. DEMOphpBB2 modificado
  23. 23. A4 - Insecure Direct Object ReferencesReferences to an internal implementation object, such as a file, directory, or database keyhttps://www.owasp.org/index.php/Top_10_2013-A4
  24. 24. DEMORFI en PHP
  25. 25. A5 - Security MisconfigurationKeeping all software up to datehttps://www.owasp.org/index.php/Top_10_2013-A5
  26. 26. The Exploit DatabaseBúsqueda de avisos + exploits ordenados por temas y fechashttp://www.exploit-db.com/
  27. 27. A6 - Sensitive Data ExposureSensitive data deserves extra protection such as encryptionhttps://www.owasp.org/index.php/Top_10_2013-A6
  28. 28. Seguridad a través de la oscuridadrobots.txthttp://www.casareal.es/robots.txtUser-agent: *Disallow:Disallow: /_*/Disallow: /ES/FamiliaReal/Urdangarin/Disallow: /CA/FamiliaReal/Urdangarin/Disallow: /EU/FamiliaReal/Urdangarin/Disallow: /GL/FamiliaReal/Urdangarin/Disallow: /VA/FamiliaReal/Urdangarin/Disallow: /EN/FamiliaReal/Urdangarin/Sitemap: http://www.casareal.es/sitemap.xml
  29. 29. Seguridad a través de la oscuridadMeta-datos: Fear the FOCA!http://www.informatica64.com/foca.aspx
  30. 30. A7 - Missing Function Level Access ControlAttackers are able to forge requests in order to access unauthorized functionalityhttps://www.owasp.org/index.php/Top_10_2013-A7
  31. 31. DEMOCron en Moodle
  32. 32. Proteger el cron en MoodleSimilar para v1.9, 2.x, etc.http://docs.moodle.org/19/en/Cron
  33. 33. A8 - Cross-Site Request Forgery (CSRF)Forces a logged-on victim’s browser to send a forged HTTP requesthttps://www.owasp.org/index.php/Top_10_2013-A8
  34. 34. Cross-Site Request Forgery (CSRF)XSRF o "sea-surf"● Explota la confianza que tiene un sitio en elnavegador de un cliente autenticado.– El servidor: acepta las credenciales de la sesión deusuario almacenada en el navegador.– El cliente: accede a una web que fuerza a sunavegador a realizar acciones no deseadas en un sitioen el que previamente se ha autenticado.● Contramedida: tokens específicos en cadaformulario.
  35. 35. DEMOphpBB2 modificado
  36. 36. A9 - Using Components with Known VulnerabilitiesVulnerable components, such as libraries, frameworks, and other software moduleshttps://www.owasp.org/index.php/Top_10_2013-A9
  37. 37. The Exploit DatabaseBúsqueda de avisos + exploits ordenados por temas y fechashttp://www.exploit-db.com/
  38. 38. A10 - Unvalidated Redirects and ForwardsAttackers can redirect victims to phishing or malware siteshttps://www.owasp.org/index.php/Top_10_2013-A10
  39. 39. Ataques de redirecciónPoCs: IE/Firefox Redirection Issue – FB Oauth2 Bypass – BugCrowdhttp://soroush.secproject.com/blog/2013/03/iefirefox-redirection-issue-fb-oauth2-bypass-bugcrowd/
  40. 40. Cómo aprender seguridad websin acabar en la cárcel ;-)
  41. 41. OWASP WebGoatAplicación J2EE preparada para ser atacadahttps://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
  42. 42. SEED (Weliang Du)Developing Instructional Laboratories for Computer SEcurity EDucationhttp://www.cis.syr.edu/~wedu/seed/
  43. 43. p0wnlabsLaboratorios para experimentar, de pago, aunque hay gratuitoshttp://p0wnlabs.com/free
  44. 44. Hacking-LabLaboratorio online para aprender (conexión por VPN)https://www.hacking-lab.com/
  45. 45. HTML5 y CSS3ataques novedosos
  46. 46. http://www.slideshare.net/x00mario/stealing-the-pie
  47. 47. “All user input is evil until proven otherwise”Ken Cox
  48. 48. Muchas gracias ;-)and... happy hacking!
  49. 49. Referencias● OWASP: The Open Web Application Security Project.● El lado del mal, retos hacking, por Chema Alonso.● Fear the FOCA! Informática64.● IE/Firefox Redirection Issue – FB Oauth2 Bypass – BugCrowd, porSoroush Dalili.● Scriptless Attacks: Stealing the pie without touching the sill, por MarioHeiderich, Felix Schuster y Marcus Niemietz.● The Exploit Database.● Wikipedia.
  50. 50. Todas las imágenes son propiedad desus respectivos dueños, el resto delcontenido está licenciado bajoCreative Commons by-sa 3.0

×