UNI Encounter 2013 Eibar-Ermua Pablo Garaizar Sagarminaga Universidad de Deusto INTRODUCCIÓN A LAS VULNERABILIDADES WEB
Jan 15, 2015
UNI Encounter 2013Eibar-Ermua
Pablo Garaizar SagarminagaUniversidad de Deusto
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.
OWASPThe Open Web Application Security Project
https://www.owasp.org/index.php/Main_Page
OWASP Top 10, 2013(release candidate)
A1 - InjectionSQL, OS, and LDAP injections
https://www.owasp.org/index.php/Top_10_2013-A1
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.
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])
● ...
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 '%';
SQL InjectionPor una comilla de nada...
http://es.xkcd.com/strips/exploits-de-una-madre/
DEMOphpBB2 modificado
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 '%';
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--';
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="
DEMOReto hacking de El lado del mal
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
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
● ...
A2 - Broken Authentication and Session Management Compromise passwords, keys, session tokens, etc.
https://www.owasp.org/index.php/Top_10_2013-A2
DEMOAutenticación con Flash o Java local
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
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.
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=javas...>
● 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>
DEMOphpBB2 modificado
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
DEMORFI en PHP
A5 - Security MisconfigurationKeeping all software up to date
https://www.owasp.org/index.php/Top_10_2013-A5
The Exploit DatabaseBúsqueda de avisos + exploits ordenados por temas y fechas
http://www.exploit-db.com/
A6 - Sensitive Data ExposureSensitive data deserves extra protection such as encryption
https://www.owasp.org/index.php/Top_10_2013-A6
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
Seguridad a través de la oscuridadMeta-datos: Fear the FOCA!
http://www.informatica64.com/foca.aspx
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
DEMOCron en Moodle
Proteger el cron en MoodleSimilar para v1.9, 2.x, etc.
http://docs.moodle.org/19/en/Cron
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
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.
DEMOphpBB2 modificado
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
The Exploit DatabaseBúsqueda de avisos + exploits ordenados por temas y fechas
http://www.exploit-db.com/
A10 - Unvalidated Redirects and ForwardsAttackers can redirect victims to phishing or malware sites
https://www.owasp.org/index.php/Top_10_2013-A10
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/
Cómo aprender seguridad websin acabar en la cárcel ;-)
OWASP WebGoatAplicación J2EE preparada para ser atacada
https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
SEED (Weliang Du)Developing Instructional Laboratories for Computer SEcurity EDucation
http://www.cis.syr.edu/~wedu/seed/
p0wnlabsLaboratorios para experimentar, de pago, aunque hay gratuitos
http://p0wnlabs.com/free
Hacking-LabLaboratorio online para aprender (conexión por VPN)
https://www.hacking-lab.com/
HTML5 y CSS3ataques novedosos
http://www.slideshare.net/x00mario/stealing-the-pie
“All user input is evil until proven otherwise”Ken Cox
Muchas gracias ;-)and... happy hacking!
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.
Todas las imágenes son propiedad de sus respectivos dueños, el resto del
contenido está licenciado bajo Creative Commons by-sa 3.0