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

Introducción a las vulnerabilidades web

Jan 15, 2015

Download

Technology

Pablo Garaizar

Charla de introducción a las vulnerabilidades web para el UNI Encounter 2013 organizado por UNI Eibar-Ermua.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introducción a las vulnerabilidades web

UNI Encounter 2013Eibar-Ermua

Pablo Garaizar SagarminagaUniversidad de Deusto

INTRODUCCIÓN A LAS VULNERABILIDADES WEB

Page 2: Introducción a las vulnerabilidades web

¿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.

Page 3: Introducción a las vulnerabilidades web

OWASPThe Open Web Application Security Project

https://www.owasp.org/index.php/Main_Page

Page 4: Introducción a las vulnerabilidades web

OWASP Top 10, 2013(release candidate)

Page 5: Introducción a las vulnerabilidades web

A1 - InjectionSQL, OS, and LDAP injections

https://www.owasp.org/index.php/Top_10_2013-A1

Page 6: Introducción a las vulnerabilidades web

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 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.

Page 7: Introducción a las vulnerabilidades web

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", 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", ([email protected])

● ...

Page 8: Introducción a las vulnerabilidades web

SQL InjectionPor 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 '%';

Page 9: Introducción a las vulnerabilidades web

SQL InjectionPor una comilla de nada...

http://es.xkcd.com/strips/exploits-de-una-madre/

Page 10: Introducción a las vulnerabilidades web

DEMOphpBB2 modificado

Page 11: Introducción a las vulnerabilidades web

SQL InjectionCampos 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 '%';

Page 12: Introducción a las vulnerabilidades web

SQL InjectionA 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--';

Page 13: Introducción a las vulnerabilidades web

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="

Page 14: Introducción a las vulnerabilidades web

DEMOReto hacking de El lado del mal

Page 15: Introducción a las vulnerabilidades web

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

Page 16: Introducción a las vulnerabilidades web

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

● ...

Page 17: Introducción a las vulnerabilidades web

A2 - Broken Authentication and Session Management Compromise passwords, keys, session tokens, etc.

https://www.owasp.org/index.php/Top_10_2013-A2

Page 18: Introducción a las vulnerabilidades web

DEMOAutenticación con Flash o Java local

Page 19: Introducción a las vulnerabilidades web

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

Page 20: Introducción a las vulnerabilidades web

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.

Page 21: Introducción a las vulnerabilidades web

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 "<SCR\0IPT>alert(\"XSS\")</SCR\0IPT>";' > out

● XSS en Flash: – <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>

Page 22: Introducción a las vulnerabilidades web

DEMOphpBB2 modificado

Page 23: Introducción a las vulnerabilidades web

A4 - Insecure Direct Object ReferencesReferences to an internal implementation object, such as a file, directory, or database key

https://www.owasp.org/index.php/Top_10_2013-A4

Page 24: Introducción a las vulnerabilidades web

DEMORFI en PHP

Page 25: Introducción a las vulnerabilidades web

A5 - Security MisconfigurationKeeping all software up to date

https://www.owasp.org/index.php/Top_10_2013-A5

Page 26: Introducción a las vulnerabilidades web

The Exploit DatabaseBúsqueda de avisos + exploits ordenados por temas y fechas

http://www.exploit-db.com/

Page 27: Introducción a las vulnerabilidades web

A6 - Sensitive Data ExposureSensitive data deserves extra protection such as encryption

https://www.owasp.org/index.php/Top_10_2013-A6

Page 28: Introducción a las vulnerabilidades web

Seguridad a través de la oscuridadrobots.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

Page 29: Introducción a las vulnerabilidades web

Seguridad a través de la oscuridadMeta-datos: Fear the FOCA!

http://www.informatica64.com/foca.aspx

Page 30: Introducción a las vulnerabilidades web

A7 - Missing Function Level Access ControlAttackers are able to forge requests in order to access unauthorized functionality

https://www.owasp.org/index.php/Top_10_2013-A7

Page 31: Introducción a las vulnerabilidades web

DEMOCron en Moodle

Page 32: Introducción a las vulnerabilidades web

Proteger el cron en MoodleSimilar para v1.9, 2.x, etc.

http://docs.moodle.org/19/en/Cron

Page 33: Introducción a las vulnerabilidades web

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

Page 34: Introducción a las vulnerabilidades web

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.

Page 35: Introducción a las vulnerabilidades web

DEMOphpBB2 modificado

Page 36: Introducción a las vulnerabilidades web

A9 - Using Components with Known VulnerabilitiesVulnerable components, such as libraries, frameworks, and other software modules

https://www.owasp.org/index.php/Top_10_2013-A9

Page 37: Introducción a las vulnerabilidades web

The Exploit DatabaseBúsqueda de avisos + exploits ordenados por temas y fechas

http://www.exploit-db.com/

Page 38: Introducción a las vulnerabilidades web

A10 - Unvalidated Redirects and ForwardsAttackers can redirect victims to phishing or malware sites

https://www.owasp.org/index.php/Top_10_2013-A10

Page 39: Introducción a las vulnerabilidades web

Ataques de redirecciónPoCs: IE/Firefox Redirection Issue – FB Oauth2 Bypass – BugCrowd

http://soroush.secproject.com/blog/2013/03/iefirefox-redirection-issue-fb-oauth2-bypass-bugcrowd/

Page 40: Introducción a las vulnerabilidades web

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

Page 41: Introducción a las vulnerabilidades web

OWASP WebGoatAplicación J2EE preparada para ser atacada

https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project

Page 42: Introducción a las vulnerabilidades web

SEED (Weliang Du)Developing Instructional Laboratories for Computer SEcurity EDucation

http://www.cis.syr.edu/~wedu/seed/

Page 43: Introducción a las vulnerabilidades web

p0wnlabsLaboratorios para experimentar, de pago, aunque hay gratuitos

http://p0wnlabs.com/free

Page 44: Introducción a las vulnerabilidades web

Hacking-LabLaboratorio online para aprender (conexión por VPN)

https://www.hacking-lab.com/

Page 45: Introducción a las vulnerabilidades web

HTML5 y CSS3ataques novedosos

Page 46: Introducción a las vulnerabilidades web

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

Page 47: Introducción a las vulnerabilidades web

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

Page 48: Introducción a las vulnerabilidades web

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

Page 49: Introducción a las vulnerabilidades web

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.

Page 50: Introducción a las vulnerabilidades web

Todas las imágenes son propiedad de sus respectivos dueños, el resto del

contenido está licenciado bajo Creative Commons by-sa 3.0