UNI Encounter 2013
Eibar-Ermua
Pablo Garaizar Sagarminaga
Universidad 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.
OWASP
The Open Web Application Security Project
https://www.owasp.org/index.php/Main_Page
OWASP Top 10, 2013
(release candidate)
A1 - Injection
SQL, OS, and LDAP injections
https://www.owasp.org/index.php/Top_10_2013-A1
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.
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)
● ...
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 '%';
SQL Injection
Por una comilla de nada...
http://es.xkcd.com/strips/exploits-de-una-madre/
DEMO
phpBB2 modificado
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 '%';
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--';
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="
DEMO
Reto hacking de El lado del mal
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
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
● ...
A2 - Broken Authentication and Session Management
Compromise passwords, keys, session tokens, etc.
https://www.owasp.org/index.php/Top_10_2013-A2
DEMO
Autenticació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=&#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>
DEMO
phpBB2 modificado
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
DEMO
RFI en PHP
A5 - Security Misconfiguration
Keeping all software up to date
https://www.owasp.org/index.php/Top_10_2013-A5
The Exploit Database
Búsqueda de avisos + exploits ordenados por temas y fechas
http://www.exploit-db.com/
A6 - Sensitive Data Exposure
Sensitive data deserves extra protection such as encryption
https://www.owasp.org/index.php/Top_10_2013-A6
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
Seguridad a través de la oscuridad
Meta-datos: Fear the FOCA!
http://www.informatica64.com/foca.aspx
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
DEMO
Cron en Moodle
Proteger el cron en Moodle
Similar 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.
DEMO
phpBB2 modificado
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
The Exploit Database
Búsqueda de avisos + exploits ordenados por temas y fechas
http://www.exploit-db.com/
A10 - Unvalidated Redirects and Forwards
Attackers can redirect victims to phishing or malware sites
https://www.owasp.org/index.php/Top_10_2013-A10
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/
Cómo aprender seguridad web
sin acabar en la cárcel ;-)
OWASP WebGoat
Aplicació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/
p0wnlabs
Laboratorios para experimentar, de pago, aunque hay gratuitos
http://p0wnlabs.com/free
Hacking-Lab
Laboratorio online para aprender (conexión por VPN)
https://www.hacking-lab.com/
HTML5 y CSS3
ataques 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

Introducción a las vulnerabilidades web

  • 1.
    UNI Encounter 2013 Eibar-Ermua PabloGaraizar Sagarminaga Universidad de Deusto INTRODUCCIÓN A LAS VULNERABILIDADES WEB
  • 2.
    ¿De qué vamosa 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 WebApplication 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 idoevolucionando 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 idoevolucionando 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 unacomilla 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 unacomilla de nada... http://es.xkcd.com/strips/exploits-de-una-madre/
  • 10.
  • 11.
    SQL Injection Campos sincomillas (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 vecesno 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 nohay 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 deEl lado del mal
  • 15.
    SQL Injection Blind SQLInjection, 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 - BrokenAuthentication and Session Management Compromise passwords, keys, session tokens, etc. https://www.owasp.org/index.php/Top_10_2013-A2
  • 18.
  • 19.
    A3 - Cross-SiteScripting (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) Diferentestipos 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écnicasde 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.
  • 23.
    A4 - InsecureDirect 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.
  • 25.
    A5 - SecurityMisconfiguration Keeping all software up to date https://www.owasp.org/index.php/Top_10_2013-A5
  • 26.
    The Exploit Database Búsquedade avisos + exploits ordenados por temas y fechas http://www.exploit-db.com/
  • 27.
    A6 - SensitiveData Exposure Sensitive data deserves extra protection such as encryption https://www.owasp.org/index.php/Top_10_2013-A6
  • 28.
    Seguridad a travésde 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ésde la oscuridad Meta-datos: Fear the FOCA! http://www.informatica64.com/foca.aspx
  • 30.
    A7 - MissingFunction 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.
  • 32.
    Proteger el cronen Moodle Similar para v1.9, 2.x, etc. http://docs.moodle.org/19/en/Cron
  • 33.
    A8 - Cross-SiteRequest 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.
  • 36.
    A9 - UsingComponents 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úsquedade avisos + exploits ordenados por temas y fechas http://www.exploit-db.com/
  • 38.
    A10 - UnvalidatedRedirects 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 seguridadweb sin acabar en la cárcel ;-)
  • 41.
    OWASP WebGoat Aplicación J2EEpreparada para ser atacada https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
  • 42.
    SEED (Weliang Du) DevelopingInstructional 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 paraaprender (conexión por VPN) https://www.hacking-lab.com/
  • 45.
  • 46.
  • 47.
    “All user inputis evil until proven otherwise” Ken Cox
  • 48.
  • 49.
    Referencias ● OWASP: TheOpen 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ágenesson propiedad de sus respectivos dueños, el resto del contenido está licenciado bajo Creative Commons by-sa 3.0