Haciendo Inyecciones SQL con SQLmap — Parte 1
Hola! hace unas semanas me llamó la atención una de las tantas herramientas que posee Kali Linux, que por cierto es un SO que incluye todo lo necesario para empezar nuestro entorno si nos queremos adentrar al mundo de la seguridad informática y en este campo como dirían por allí se aprende lo bueno y lo malo de la red, lo bueno por que nos ayuda a hacer testing de vulnerabilidades y ayudarnos a darnos cuenta de los muchos caminos por los que nuestra red o nuestra app puede ser atacada, y también digo lo malo por que su mal uso o simplemente por que su uso es para el “mal ” puede ser como regalarle un arma a un criminal por su cumpleaños.
A muchos que les gusta redes y servidores les agrada esta herramienta o también por que te gusta la informática y de alguna manera u otra haces honor a tu título de “ingeniero de sistemas” o al “¿me puedes hackear facebook?”, o tal vez ¿tú que estudias sistemas como obtengo la clave wifi? …
Por cada pregunta como esa muere un gatito créanme.
Pero sabes lo curioso de todo esto, es que podemos responder a sus preguntas =D (oh si, claro que si), solo requiere de nosotros un poco de dedicación; eso sí, leer bastante!, y aprender muchas cosillas técnicas por allí, que nos ayudarán un montón.
Que lance la primera piedra quien en sus años de estudiante de Ingeniería no ha intentado “hackear” alguna que otra cosa por la red.
Ok reservaré mi piedra, la informática es algo que me gusta y recuerdo que ese gusto comenzó en el 2010. Como todo Lammer uno quiere hacer cosas geniales, el problema viene cuando lo sigues siendo siempre y te aferras a herramientas sin que al final sea por tu cuenta que experimentes y descubras habilidades, nadie quisiera estar en ese camino incluyéndome.
Existe un personaje al cual he seguido y me parece un buen referente a gusto personal, como para hacer mención de él. Y me refiero a Chema Alonso quien es un Ingeniero Informático, postgraduado en Sistemas de Información y actualmente trabaja en su doctorado en seguridad Web. Trabaja como consultor de Seguridad en Informática 64 desde hace 10 años y ademas ha sido ponente en importantes conferencias como la Defcon o BlackHat, allí es donde van desde el FBI hasta Google a buscar sus nuevos expertos en seguridad.
Les dejo también su página web un tanto minimalista pero con mucho material para estudiar http://www.elladodelmal.com/
Continuamente es un gran aportador sobre seguridad informática en nuestros tiempos o como aquella ocasión en la que dio una charla sobre Windows, incluso a favor de Windows, en la Conferencia Internacional del Software Libre celebrada en Málaga en 2008 ante decenas de seguidores de Linux.
Fue como si Bambi se colara en la convención anual de la Asociación Nacional del Rifle de EE UU. Y salió más que vivo de allí. O como cuando se metió a productor para que su serie web preferida, Cálico Electrónico, siguiera contando las aventuras del anti héroe tecnológico español. O cuando, en 2014, inició una campaña para que la RAE dejara de identificar Hacker con delincuente informático y recuperara su significado original, el de amante de la tecnología.
Hablemos de páginas web
los sitios web son hoy en día prácticamente un estándar a seguir por las empresas que ofrecen algún bien o servicio, la mayoría si desea vender optan por algún sitio web y muchos de estos sitios web incluyen formularios de ingreso de información y lo que sigue es que toda esa data se guarda en una base de datos, ahora si consideramos que esa página web lleva mas de 5 o tal vez 7 años en la nube ya se imaginarán la cantidad de datos que almacena, y si hablamos de algo mucho mayor a eso podemos mencionar aquellas aplicaciones web de bancos, hospitales, centros educativos,la SUNAT, agencias de viajes, ONPE, RENIEC, el mismo gobierno en fin. Muchas de estas cuentan con una Intranet a la cual muchos usuarios desde distintos lugares acceden para hacer una revisión o ver estadísticas y tráfico de datos.
Vivimos en el mejor momento de la web, si eso es muy cierto, el bum tecnológico y por la misma aceleración, transacciones, etc, hacen necesario que dispongamos de un portal en todo momento o incluso de una app móvil que por cierto esta conectado a una red ya sea Wifi o de datos.
¿La mas antigua de las amenazas?
Luego de hacer prácticamente un recuento de seguridad web, les voy a comentar un poco más de SQL injection, ¿entonces por qué digo la mas antiguas de las amenazas? Lo propongo como una pregunta y probablemente lo deje así ya que esto va mas por el lado de una opinión personal. SQL es un lenguaje estándar de consultas, todo en el plantea aquello que hacemos cotidianamente y más aun cuando estamos conectados a Internet, posee una base de datos (relacional o noSQL eso ya es otro tema).
Pero algo es cierto, la mayor parte de SGBD (Sistemas Gestores de Base de Datos) son de tipo relacional, además recordemos que hablar de SQL es hablar de conjuntos matemáticos llevados a la informática.
SQL INJECTION
vamos a definir de que trata.
“Es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar operaciones sobre una base de datos.
El origen de la vulnerabilidad radica en el incorrecto chequeo 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.”
Este concepto es mas que suficiente. Es junto con esto que les mencionaré de una de las herramientas con las cuales hice algunos ejemplos para un taller de seguridad web en la PUCP, ésta herramienta se llama SQLmap, a la par que explico como usarlo veremos un poco de que trata las inyecciones SQL.
Empecemos a ver la magia…
SQLmap es una herramienta desarrollada en Python para realizar SQL Injection de forma automatizada. Con esto evitamos en cierta forma el trabajo de crear bypass o ingresar códigos sql para explotar los datos. Enseguida lo veremos.
Instalando SQLmap
Si estás usando Kali Linux, SQLmap ya viene instalado.
Para instalar SQLmap de forma manual, debes tener instado Python. Otra manera práctica de tenerlo sin necesidad de poseer Kali es simplemente clonar el repositorio desde su página oficial. http://sqlmap.org/los pasos y la documentación completa en inglés están allí.
Pero aquí les enseñaré como usarlo.
$ sudo apt-get install python
Clonar el repositorio con Git:
$ git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
Entrar a cd sqlmap-dev. Para ejecutar el programa ingresamos el siguiente código, con esto se lista todos los parámetros que puede recibir SQLmap.
$ python sqlmap.py --help
Si estás en Kali Linux, no es necesario ejecutar el programa con Python, ya que se tiene un acceso directo. Puedes ejecutar directamente para poder ver los parámetros a introducir para una inyección.
$ sqlmap –help
¿Cómo Identifico páginas vulnerables a SQL Injection?
Una manera sencilla para identificar sitios web con la vulnerabilidad SQL Injection consiste en agregar algunos caracteres a la URL, por ejemplo comillas, coma o punto. Por ejemplo, si la página está en PHP y se tiene una URL donde pase un parámetro para una búsqueda, se puede intentar agregar una ‘ al final.
Por ejemplo:
http://www.suagacollection.com/photo-gallery.php?id=1'
Si el sitio web arroja un error directo de la base de datos, es vulnerable a SQL Injection.
Seguro se preguntaran por que aparece errores como este, bueno esto viene desde la programación inicial del sitio lo cual como usuarios desconocemos, en alguno casos al observar algunos errores mientras programamos y mostramos nuestro sitio, nos muestran ciertas fallas que a nuestra vista son insignificantes y si usamos php por ejemplo solo colocamos un <?php error_reporting(0); ?>
y listo problema “solucionado”, pero cabe mencionar que es un error muy común por parte de los administradores, ya que eso no arregla el bug, sin embargo, el bug sigue allí. Es un problema para la seguridad de su sitio, ya que el atacante podrá darse cuenta y seguir intentando hasta tener el usuario y contraseña de la administración fácilmente.
Hacer inyecciones básicamente será usar querys SQL como son el caso de union y select y también los famosos join. Solo es cuestión de manipular en la URL de la página como por ejemplo ingresar las siguientes líneas hasta poder encontrar el error mostrado anteriormente y dar con el nombre de la tabla que está propensa o vulnerable a su acceso.
Podemos pasarnos muchos minutos o incluso horas dando con la tabla o encontrando el error. Es allí donde entra actuar SQLmap, herramienta que espera que le ingresemos parámetros para explotar esos datos ocultos, SQLmap se encargará del escaneo minucioso y de hacer internamente las uniones, joins o selects necesarios.
Yo usare el siguiente sitio web http://www.apolloqueen.com/profile.php?id=125, esta no es la única, mas adelante les dejare una lista de sitios que pueden usar para hacer sus propias pruebas, y si observamos también nos daremos cuenta que las url tendrán la forma “?var=algo”. En estos primeros ejemplos nos valdremos de esta forma de url para mostrarles lo que puede hacer SQLmap lo cual no quiere decir que sea la única forma de inyecciones.
En este primer Post no vamos a extendernos tanto en la herramienta, es por ello que el siguiente veremos ejemplos que se realizaron desde mi Pc.
Puedes revisar mis otros post:
Espero que este artículo sea de tu agrado y si te gustó dale click en el ❤, gracias.