Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

9
Universidad Nacional Autónoma de México Facultad de Contaduría y Administración Diplomado Diseño, Construcción y Administración de Redes de Datos Módulo 6. Seguridad de Bases de Datos Elaboró: Francisco Medina López 1 Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux Antecedentes SQL Injection (SQLi) es el ataque vía web que aprovecha errores en la validación de datos introducidos por el usuario, y que permiten a un atacante, tener control de cierta aplicación. El origen de la vulnerabilidad radica en la incorrecta revisión y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o script que esté embebido dentro de otro. Kali Linux es una distribución de Linux avanzada para pruebas de penetración y auditorías de seguridad. Es una completa reconstrucción de BackTrack Linux que se adhiere completamente a los estándares de desarrollo de Debian. SQLmap es una herramienta escrita en Python que se encarga de realizar peticiones a los parámetros de una URL que se le indiquen, ya sea mediante una petición GET o POST buscando que la aplicación sea vulnerable a una posible SQL Injection y poder explotarla. Es capaz de explotar todo tipo de SQLi como unionbase, timebaseblind, baseblindinjection, heavyqueries entre otros. Requerimientos Equipo de cómputo con el sistema operativo Kali Linux correctamente configurado para tener acceso a la Internet. Servidor web objetivo cuya dirección IP será proporcionada por el instructor. Para el caso de los ejemplos mostrados en este documento se usará la dirección IP 10.211.55.15 la cual deberá ser reemplazada por la indicada por el instructor.

Transcript of Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Page 1: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     1  

Actividad   No.   1.11:   SQL   Injection   con  sqlmap  en  Kali  Linux  Antecedentes    SQL   Injection  (SQLi)  es  el  ataque  vía  web  que  aprovecha  errores  en  la  validación  de  datos   introducidos   por   el   usuario,   y   que   permiten   a   un   atacante,   tener   control   de  cierta  aplicación.    El   origen   de   la   vulnerabilidad   radica   en   la   incorrecta   revisión   y/o   filtrado   de   las  variables  utilizadas  en  un  programa  que   contiene,  o  bien  genera,   código  SQL.  Es,  de  hecho,  un  error  de  una   clase  más  general  de  vulnerabilidades  que  puede  ocurrir   en  cualquier  lenguaje  de  programación  o  script  que  esté  embebido  dentro  de  otro.    Kali   Linux   es   una   distribución   de   Linux   avanzada   para   pruebas   de   penetración   y  auditorías  de  seguridad.  Es  una  completa  re-­‐construcción  de  BackTrack  Linux  que  se  adhiere  completamente  a  los  estándares  de  desarrollo  de  Debian.    SQLmap  es  una  herramienta  escrita  en  Python  que  se  encarga  de  realizar  peticiones  a  los  parámetros  de  una  URL  que   se   le   indiquen,  ya   sea  mediante  una  petición  GET  o  POST  buscando  que  la  aplicación  sea  vulnerable  a  una  posible  SQL  Injection  y  poder  explotarla.  Es  capaz  de  explotar  todo  tipo  de  SQLi  como  union-­‐base,  time-­‐base-­‐blind,  base-­‐blind-­‐injection,  heavy-­‐queries  entre  otros.    Requerimientos    Equipo   de   cómputo   con   el   sistema   operativo   Kali   Linux   correctamente   configurado  para  tener  acceso  a  la  Internet.    Servidor  web  objetivo   cuya  dirección  IP  será  proporcionada  por  el   instructor.  Para  el  caso   de   los   ejemplos   mostrados   en   este   documento   se   usará   la   dirección   IP  10.211.55.15  la  cual  deberá  ser  reemplazada  por  la  indicada  por  el  instructor.      

Page 2: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     2  

Instrucciones    

1. Inicia  tu  equipo  de  cómputo  con  el  sistema  operativo  Kali  Linux  y  configura  los  parámetros  de  red  para  tener  acceso  a  la  Internet.  

2. Abre  una  terminal  usando  el  ícono   ,  ubicado  en  el  panel  superior.    

   

3. Ejecuta  el  siguiente  comando  en  la  terminal  (Recuerda  cambiar  la  dirección  IP  por  la  del  servidor  web  objetivo  indicada  por  el  instructor):    sqlmap  -­‐u  "http://10.211.55.15/cat.php?id=3"  -­‐-­‐dbs    

 

Page 3: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     3  

La  URL  /cat.php?id=3   fue  obtenida  por  el  escáner  de  vulnerabilidades  web  VEGA   en   la   Actividad   No.   1.10:   Análisis   de   vulnerabilidades   con   VEGA   en   Kali  Linux.    

4. SQLmap   tratará  de   identificar  el  manejador  de  base  de  datos  utilizado  por   la  aplicación   web   ejecutándose   en   el   servidor   web   objetivo.   En   este   caso  determina  que  se  esta  utilizando  un  servidor  MySQL.  Presionar  la  tecla  Y  y  dar  Enter.      

   

5. En   el   paso   siguiente,   SQLmap   nos   pregunta   si   deseamos   incluir   todas   las  pruebas  para  MySQL,  tecleamos  Enter  para  continuar.    

     

Page 4: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     4  

 6.  SQLmap   identifica   que   la   variable   ‘id’   usada   por   la   aplicación   web   es  

vulnerable   a   SQL   Injection.   Tecleamos   Enter   para   indicar   que   no   queremos  probar   otra   variable.     En   este   momento   SQLmap   realiza   el   ataque   de   SQL  Injection  y  logra  determinar  el  sistema  operativo  del  servidor  web  objetivo,  la  versión  del   servidor  web  empleado,  la  versión  del  manejador  de  base  de  datos  MySQL  en  ejecución  y  nos  muestra  las  dos  bases  de  datos  disponibles  en  el  servidor.                                              

   

Page 5: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     5  

 7. Una  vez  obtenido  el  nombre  de   las  bases  de  datos  disponibles  en  el  servidor,  

vamos  a   indicar   a  SQLmap   que  obtenga   las   tablas  que   conforman   la  base  de  datos  photoblog,  para  ellos  ejecutamos  el  siguiente  comando:    sqlmap  -­‐u  "http://10.211.55.15/cat.php?id=3"  -­‐D  photoblog  -­‐-­‐tables                                                Podemos  observar  que  la  base  de  datos  photoblog  tiene  tres  tablas:  

• categories  • pictures  • users  

   

Page 6: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     6  

 8. Una  vez  identificadas  las  tablas,  podemos  inferir  que  las  credenciales  de  acceso  

a   la   aplicación   se   encuentran   en   la   tabla  users.   Para   realizar   una   consulta   y  mostrar  el  contenido  de  dicha  tabla,  ejecutamos  el  siguiente  comando:    sqlmap   -­‐u   "http://10.211.55.15/cat.php?id=3"   -­‐D   photoblog   -­‐T  users  -­‐-­‐columns                                  

             El  resultado  de  la  ejecución  del  comando,  nos  permite  conocer  los  campos  de  la  tabla  user  dentro  de  la  base  de  datos  photoblog.  

   

Page 7: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     7  

9. Conociendo  el  nombre  de   la  columnas  de   la   tabla  users,  es  posible  hacer  una  consulta  para  obtener  el  contenido  de  la  tabla.  Para  ellos  tecleamos  el  siguiente  comando:    sqlmap   -­‐u   "http://10.211.55.15/cat.php?id=3"   -­‐D   photoblog   -­‐T  users  -­‐C  login,password  -­‐-­‐dump    

   

10. SQLmap  logra  identificar  un  campo  cifrado  que  contiene  las  contraseñas  de  las  cuentas  de  la  tabla  users.  Presionamos  la  tecla  Y  y  Enter.    

 11. SQLmap   permite   intentar   obtener   las   contraseñas   usando   un   diccionarios,  

para  utilizarlo  presionamos  la  tecla  Enter.  

 

Page 8: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     8  

12. El   siguiente   paso   consiste   en   indicar   la   ruta   al   diccionario   a   utilizar,  presionamos   la   tecla  Enter  para  utilizar  el  diccionario  por  Default   incluido  en  SQLmap.    

   

13. A  continuación,  SQLmap  nos  pregunta  si  deseamos  usar  prefijos  comúnmente  utilizados   en   las   contraseñas.   Presionamos   la   tecla   Y   y   después   Enter   para  indicar  que  SI  queremos  usar  los  prefijos.                                                  

14. Terminado  el  proceso,  SQLmap  obtiene  el  nombre  de  usuario  y  la  contraseña  almacenada  en  la  tabla  users  de  la  base  de  datos  photoblog.  

   

Page 9: Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux

Universidad  Nacional  Autónoma  de  México  Facultad  de  Contaduría  y  Administración  Diplomado  Diseño,  Construcción  y  Administración  de  Redes  de  Datos  Módulo  6.  Seguridad  de  Bases  de  Datos    

Elaboró:  Francisco  Medina  López     9  

 15. Introducimos   los   datos   obtenidos   en   la   aplicación   web   photoblog   desde   un  

navegador  web.