Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare una empresa de Scribd logo

1

UNI Encounter 2013
Eibar-Ermua
Pablo Garaizar Sagarminaga
Universidad de Deusto
INTRODUCCIÓN A LAS
VULNERABILIDADES WEB

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

OWASP
The Open Web Application Security Project
https://www.owasp.org/index.php/Main_Page

4

OWASP Top 10, 2013
(release candidate)

5

A1 - Injection
SQL, OS, and LDAP injections
https://www.owasp.org/index.php/Top_10_2013-A1

6

SQL Injection
Ha 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 wwwthreads
via 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

SQL Injection
Ha 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", BlackHat
Conferences.
● 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", NGS
Software.
● 2008 Chema Alonso, José Parada. "Time-Based Blind SQL Injection using heavy queries: A
practical approach for MS SQL Server, MS Access, Oracle and MySQL databases and
Marathon Tool". Informática64, Microsoft.
● 2009 Daniel Kachakil, "Select for XML SQL Injection. Fast data extraction using SQL
injection and XML statements", (dani@kachakil.com)
● ...

8

SQL Injection
Por una comilla de nada...
sql = "SELECT * FROM users WHERE user = '" + userName + "';";
userName -> ' or '1'='1
SELECT * 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 name
LIKE '%';

9

SQL Injection
Por una comilla de nada...
http://es.xkcd.com/strips/exploits-de-una-madre/

10

DEMO
phpBB2 modificado

11

SQL Injection
Campos sin comillas (numéricos):
sql = "SELECT * FROM users WHERE id = " + userID + ";";
userID -> 1 OR 1=1
SELECT * FROM users WHERE id = 1 OR 1=1;
userID -> 1;DROP TABLE users
SELECT * 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 name
LIKE '%';

12

SQL Injection
A veces no se sabe el número de campos en la tabla: usamos mensajes de error
sql = "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 HAVING
1=1--';

13

SQL Injection
Si 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

DEMO
Reto hacking de El lado del mal

15

SQL Injection
Blind 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

SQL Injection
Para 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

A2 - Broken Authentication and Session Management
Compromise passwords, keys, session tokens, etc.
https://www.owasp.org/index.php/Top_10_2013-A2

18

DEMO
Autenticación con Flash o Java local

19

A3 - Cross-Site Scripting (XSS)
Allows attackers to execute scripts in the victim’s browser
https://www.owasp.org/index.php/Top_10_2013-A3

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 Zona
Local 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 cadena
consultada (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

Cross-Site Scripting (XSS)
Técnicas de evasión de filtros
● Evitar espacios.
● Listas negras de tags:
– <scr<script>ipt>
● Codificación alternativa:
– <IMG
SRC=&#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

DEMO
phpBB2 modificado

23

A4 - Insecure Direct Object References
References to an internal implementation object, such as a file, directory, or database key
https://www.owasp.org/index.php/Top_10_2013-A4

24

DEMO
RFI en PHP

25

A5 - Security Misconfiguration
Keeping all software up to date
https://www.owasp.org/index.php/Top_10_2013-A5

26

The Exploit Database
Búsqueda de avisos + exploits ordenados por temas y fechas
http://www.exploit-db.com/

27

A6 - Sensitive Data Exposure
Sensitive data deserves extra protection such as encryption
https://www.owasp.org/index.php/Top_10_2013-A6

28

Seguridad a través de la oscuridad
robots.txt
http://www.casareal.es/robots.txt
User-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

Seguridad a través de la oscuridad
Meta-datos: Fear the FOCA!
http://www.informatica64.com/foca.aspx

30

A7 - Missing Function Level Access Control
Attackers are able to forge requests in order to access unauthorized functionality
https://www.owasp.org/index.php/Top_10_2013-A7

31

DEMO
Cron en Moodle

32

Proteger el cron en Moodle
Similar para v1.9, 2.x, etc.
http://docs.moodle.org/19/en/Cron

33

A8 - Cross-Site Request Forgery (CSRF)
Forces a logged-on victim’s browser to send a forged HTTP request
https://www.owasp.org/index.php/Top_10_2013-A8

34

Cross-Site Request Forgery (CSRF)
XSRF o "sea-surf"
● Explota la confianza que tiene un sitio en el
navegador de un cliente autenticado.
– El servidor: acepta las credenciales de la sesión de
usuario almacenada en el navegador.
– El cliente: accede a una web que fuerza a su
navegador a realizar acciones no deseadas en un sitio
en el que previamente se ha autenticado.
● Contramedida: tokens específicos en cada
formulario.

35

DEMO
phpBB2 modificado

36

A9 - Using Components with Known Vulnerabilities
Vulnerable components, such as libraries, frameworks, and other software modules
https://www.owasp.org/index.php/Top_10_2013-A9

37

The Exploit Database
Búsqueda de avisos + exploits ordenados por temas y fechas
http://www.exploit-db.com/

38

A10 - Unvalidated Redirects and Forwards
Attackers can redirect victims to phishing or malware sites
https://www.owasp.org/index.php/Top_10_2013-A10

39

Ataques de redirección
PoCs: IE/Firefox Redirection Issue – FB Oauth2 Bypass – BugCrowd
http://soroush.secproject.com/blog/2013/03/iefirefox-redirection-issue-fb-oauth2-bypass-bugcrowd/

40

Cómo aprender seguridad web
sin acabar en la cárcel ;-)

41

OWASP WebGoat
Aplicación J2EE preparada para ser atacada
https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

42

SEED (Weliang Du)
Developing Instructional Laboratories for Computer SEcurity EDucation
http://www.cis.syr.edu/~wedu/seed/

43

p0wnlabs
Laboratorios para experimentar, de pago, aunque hay gratuitos
http://p0wnlabs.com/free

44

Hacking-Lab
Laboratorio online para aprender (conexión por VPN)
https://www.hacking-lab.com/

45

HTML5 y CSS3
ataques novedosos

46

http://www.slideshare.net/x00mario/stealing-the-pie

47

“All user input is evil until proven otherwise”
Ken Cox

48

Muchas gracias ;-)
and... happy hacking!

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, por
Soroush Dalili.
● Scriptless Attacks: Stealing the pie without touching the sill, por Mario
Heiderich, Felix Schuster y Marcus Niemietz.
● The Exploit Database.
● Wikipedia.

50

Todas las imágenes son propiedad de
sus respectivos dueños, el resto del
contenido está licenciado bajo
Creative Commons by-sa 3.0

Más contenido relacionado

Introducción a las vulnerabilidades web

  • 1. UNI Encounter 2013 Eibar-Ermua Pablo Garaizar Sagarminaga Universidad de Deusto INTRODUCCIÓN A LAS VULNERABILIDADES WEB
  • 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. OWASP The Open Web Application Security Project https://www.owasp.org/index.php/Main_Page
  • 4. OWASP Top 10, 2013 (release candidate)
  • 5. A1 - Injection SQL, OS, and LDAP injections https://www.owasp.org/index.php/Top_10_2013-A1
  • 6. SQL Injection Ha 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 wwwthreads via 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. SQL Injection Ha 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", BlackHat Conferences. ● 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", NGS Software. ● 2008 Chema Alonso, José Parada. "Time-Based Blind SQL Injection using heavy queries: A practical approach for MS SQL Server, MS Access, Oracle and MySQL databases and Marathon Tool". Informática64, Microsoft. ● 2009 Daniel Kachakil, "Select for XML SQL Injection. Fast data extraction using SQL injection and XML statements", (dani@kachakil.com) ● ...
  • 8. SQL Injection Por una comilla de nada... sql = "SELECT * FROM users WHERE user = '" + userName + "';"; userName -> ' or '1'='1 SELECT * 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 name LIKE '%';
  • 9. SQL Injection Por una comilla de nada... http://es.xkcd.com/strips/exploits-de-una-madre/
  • 11. SQL Injection Campos sin comillas (numéricos): sql = "SELECT * FROM users WHERE id = " + userID + ";"; userID -> 1 OR 1=1 SELECT * FROM users WHERE id = 1 OR 1=1; userID -> 1;DROP TABLE users SELECT * 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 name LIKE '%';
  • 12. SQL Injection A veces no se sabe el número de campos en la tabla: usamos mensajes de error sql = "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 HAVING 1=1--';
  • 13. SQL Injection Si 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. DEMO Reto hacking de El lado del mal
  • 15. SQL Injection Blind 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. SQL Injection Para 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. A2 - Broken Authentication and Session Management Compromise passwords, keys, session tokens, etc. https://www.owasp.org/index.php/Top_10_2013-A2
  • 19. A3 - Cross-Site Scripting (XSS) Allows attackers to execute scripts in the victim’s browser https://www.owasp.org/index.php/Top_10_2013-A3
  • 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 Zona Local 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 cadena consultada (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. Cross-Site Scripting (XSS) Técnicas de evasión de filtros ● Evitar espacios. ● Listas negras de tags: – <scr<script>ipt> ● Codificación alternativa: – <IMG SRC=&#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>
  • 23. A4 - Insecure Direct Object References References to an internal implementation object, such as a file, directory, or database key https://www.owasp.org/index.php/Top_10_2013-A4
  • 25. A5 - Security Misconfiguration Keeping all software up to date https://www.owasp.org/index.php/Top_10_2013-A5
  • 26. The Exploit Database Búsqueda de avisos + exploits ordenados por temas y fechas http://www.exploit-db.com/
  • 27. A6 - Sensitive Data Exposure Sensitive data deserves extra protection such as encryption https://www.owasp.org/index.php/Top_10_2013-A6
  • 28. Seguridad a través de la oscuridad robots.txt http://www.casareal.es/robots.txt User-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. Seguridad a través de la oscuridad Meta-datos: Fear the FOCA! http://www.informatica64.com/foca.aspx
  • 30. A7 - Missing Function Level Access Control Attackers are able to forge requests in order to access unauthorized functionality https://www.owasp.org/index.php/Top_10_2013-A7
  • 32. Proteger el cron en Moodle Similar para v1.9, 2.x, etc. http://docs.moodle.org/19/en/Cron
  • 33. A8 - Cross-Site Request Forgery (CSRF) Forces a logged-on victim’s browser to send a forged HTTP request https://www.owasp.org/index.php/Top_10_2013-A8
  • 34. Cross-Site Request Forgery (CSRF) XSRF o "sea-surf" ● Explota la confianza que tiene un sitio en el navegador de un cliente autenticado. – El servidor: acepta las credenciales de la sesión de usuario almacenada en el navegador. – El cliente: accede a una web que fuerza a su navegador a realizar acciones no deseadas en un sitio en el que previamente se ha autenticado. ● Contramedida: tokens específicos en cada formulario.
  • 36. A9 - Using Components with Known Vulnerabilities Vulnerable components, such as libraries, frameworks, and other software modules https://www.owasp.org/index.php/Top_10_2013-A9
  • 37. The Exploit Database Búsqueda de avisos + exploits ordenados por temas y fechas http://www.exploit-db.com/
  • 38. A10 - Unvalidated Redirects and Forwards Attackers can redirect victims to phishing or malware sites https://www.owasp.org/index.php/Top_10_2013-A10
  • 39. Ataques de redirección PoCs: IE/Firefox Redirection Issue – FB Oauth2 Bypass – BugCrowd http://soroush.secproject.com/blog/2013/03/iefirefox-redirection-issue-fb-oauth2-bypass-bugcrowd/
  • 40. Cómo aprender seguridad web sin acabar en la cárcel ;-)
  • 41. OWASP WebGoat Aplicación J2EE preparada para ser atacada https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
  • 42. SEED (Weliang Du) Developing Instructional Laboratories for Computer SEcurity EDucation http://www.cis.syr.edu/~wedu/seed/
  • 43. p0wnlabs Laboratorios para experimentar, de pago, aunque hay gratuitos http://p0wnlabs.com/free
  • 44. Hacking-Lab Laboratorio online para aprender (conexión por VPN) https://www.hacking-lab.com/
  • 45. HTML5 y CSS3 ataques novedosos
  • 47. “All user input is evil until proven otherwise” Ken Cox
  • 48. Muchas gracias ;-) and... happy hacking!
  • 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, por Soroush Dalili. ● Scriptless Attacks: Stealing the pie without touching the sill, por Mario Heiderich, Felix Schuster y Marcus Niemietz. ● The Exploit Database. ● Wikipedia.
  • 50. Todas las imágenes son propiedad de sus respectivos dueños, el resto del contenido está licenciado bajo Creative Commons by-sa 3.0