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="
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=javas...>
● 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
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
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
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