Conociendo SQLMap con Badstore

  • 0

Conociendo SQLMap con Badstore

Figura 1: Logo de SqlMap

Figura 1: Logo de SqlMap

¿Que es sqlmap?

Sqlmap es una herramienta opensource de pentesting que se centra en explotar vulnerabilidades del tipo SQL injection en servidores de base de datos. Es una eficaz herramienta para auditar bases de datos si no estamos muy preocupados por la cantidad de registros, trazas o logs que podamos dejar en el servidor a auditar.

Un poco de historia…

Las andanzas de esta aplicación comenzaron en julio de 2006, cuando Danielle Bellucci dió de alta el proyecto en SourceForge contando con un soporte limitado para MySQL. En Septiembre de ese mismo año tomó las riendas del proyecto Bernardo Damele y a principios del año 2007 ya incorporaba funciones para auditar Microsoft SQL-Server. A finales de ese mismo año incluyeron funciones para Oracle y así continuaron añadiendo funcionalidades, hasta que, en la actualidad, se ha convertido en la mejor navaja suiza para auditar bases de datos, capaz de obtener datos de bases de datos, shells, lectura de ficheros del sistema y un gran etcétera.

Un poco mas sobre la herramienta…

SQLmap está escrito en python, un lenguaje orientado a objetos interpretado, su nombre viene de los humoristas británicos “Monty Python”, podremos ejecutarlo teniendo instalado el intérprete de python en nuestra máquina. Todo muy facilito 😉

Para ejecutarlo abriremos un terminal y nos posicionaremos en la carpeta donde está instalado sqlmap, podemos buscar donde está con el siguiente comando:

find / -name sqlmap.py

Con ese comando nos indicara la carpeta donde se encuentra el sqlmap. Nos posicionaremos en dicha carpeta y procederemos  a ejecutar sqlmap para que nos muestre la ayuda:

python ./sqlmap.py -h

Con esto podemos hacernos una idea de la cantidad de funciones que incorpora actualmente, si necesitamos más información podemos ejecutar sqlmap con el modificador -hh y nos mostrará una ayuda más extensa.

Cada vez que vayamos a usar SQLmap es bueno ejecutar su actualización con el comando, con esto actualizaremos la herramienta con las nuevas funcionalidades:

python ./sqlmap.py --update

¿Probamos el sqlmap?

Para no tener ninguna clase de problema legal a la hora de realizar pruebas con esta aplicación usaremos Badstore, una máquina virtual que ocupa 10Mb y que contiene un servidor web con fallos de SQL inyection entre otros. Creamos nuestra máquina virtual y cargamos la imagen .iso de badstore.

Os recordamos que NO se puede hacer este tipos de pruebas, ataques o como lo queramos llamar en servidores de los que no tenemos autorización.

Cuando haya terminado la carga presionaremos enter para acceder a la consola, y miraremos qué ip nos ha asignado el DHCP con el comando “ifconfig”.

Una vez hecho todo esto volvemos a nuestra shell e introducimos el siguiente comando:

python sqlmap.py --hex --forms -u http://192.168.XXX.XXX/cgi-bin/badstore.cgi -b

Los modificadores usados son los siguientes:

–hex Transforma la inyección a valores hexadecimales.
–forms Escanea los formularios de la url que le hemos pasado.
-u Indicamos la URL que queremos escanear
-b Le indicamos que nos devuelva el banner de la base de datos.

Hay otros modificadores que nos pueden ser de interés, como por ejemplo:

–current-user Nos devuelve el usuario actual que está usando la base de datos.
–current-db Nos devuelve la base de datos actual que esta usando el usuario de la web.
–batch Con este comando se introduce la respuesta por defecto cada vez que el programa pregunte.
–random-agent Sirve para tener la cabecera de un navegador distinto cada vez que ejecutemos el comando.
–mobile Con este modificador pordemos imitar la cabecera de un navegador de un teléfono móvil.

Al ejecutar este comando sqlmap nos irá pidiendo la información que necesite:

sqlmap-badst-testformquestion

En este caso nos pregunta si queremos comprobar el formulario que hay en la página k hemos incluido con el modificador -u (–url). La opción marcada en mayúsculas es la opción por defecto, así que en este caso solo debemos darle a la tecla enter directamente.

mayitvulnerable

Vemos que nos va imprimiendo por pantalla las posibles vulnerabilidades que va encontrando. Mas adelante cuando constata la vulnerabilidad nos muestra por pantalla el payload o firma para esa vulnerabilidad y nos pregunta si deseamos explotar esa vulnerabilidad.
payloadbadstore

Una vez explotada pasa a mostrarnos lo que le hemos indicado con el modificador -b (–banner)

banner-badstore-sqlmap

Un paso importante es saber el nombre de la base de datos a la que vamos a atacar, para ello ejecutamos el comando con el modificador –current-db, el cual nos devolverá el nombre de la base de datos actual.

python sqlmap.py --hex --forms -u http://192.168.xxx.xxx/cgi-bin/badstore.cgi --current-db

current-db-badstore-sqlmap

Llegados a este punto, debido a la versión de la base de datos de Badstore no podemos consultar ninguna lista con el nombre de tablas ya que carece de information_schema y los modificadoes –tables y –columns no nos servirán de mucho. Por tanto tendremos que intentar una inyección “a ciegas” esto es, sin saber nada acerca de los nombres de las tablas, para facilitar la etapa de descubrimiento SQL-Map incorpora diccionarios que agilizan dicha tarea.

Primero intentamos con el siguiente comando:

python sqlmap.py --hex --forms -u http://192.168.xxx.xxx/cgi-bin/badstore.cgi -D badstoredb --tables

En este caso, al no poder extraer las tablas, nos pregunta si deseamos usar los nombres de tablas más frecuentes, los cuales están en el directorio de instalación de sqlmap, concretamente en el directorio txt.

noinformationschema

Nos pedirá el numero de hilos o numero de pruebas simultaneas que queremos utilizar y seguidamente se dispondrá a comprobar los nombres de las tablas.

numberthreads-triedtables

Una vez la tengamos, dumpeamos la tabla userdb, en ella estarán los usuarios de badstore, en este caso, sqlmap detecta que hay hashes en MD5 en la tabla que estamos dumpeando y nos pregunta si queremos pasarle un diccionario por si alguna de las passwords figuran en el. Para ello utilizamos el siguiente comando:

python sqlmap.py --hex --forms -u http://192.168.1.108/cgi-bin/badstore.cgi -D badstoredb -T userdb --dump

crackedpasswds

En el caso de badstore encuentra la mayoría, lo que nos brinda un acceso como administrador en este sparring virtual. Lo importante es hacernos una idea de el uso de esta herramienta, de lo que se puede hacer en una auditoria o lo que pueden hacer los “malos”. La idea al final de la explotación de una inyección SQL es acceder a la Base de Datos del sistema y robar los datos que se guardan. Estos datos pueden ser desde información de la propia empresa como listas de direcciones, nombres, emails, teléfonos, etc.

Nuestro grupo de Auditorias Informáticas están muy al tanto de cualquier nueva herramienta que pueda servir para realizar estas auditorias, así como de los diferentes métodos que existen para evitar sufrir un ataque de estas características.

Un saludo!


  • 0

Diario de un exploit crítico. Vulnerabilidad Drupal 7.32

Cada día salen a la luz nuevas vulnerabilidades mas o menos fáciles de explotar.

Estas vulnerabilidades o bugs pueden afectar de diferente manera a los servicios que ponemos en la red. Cada vez mas, se reduce el tiempo desde que se hace publica una vulnerabilidad hasta que esta es explotada de una manera “industrial” para conseguir algún tipo de beneficio.
Lo que vamos a contar ahora es una ejemplo de esta rapidez y lo que puede llegar a hacer para una plataforma que es comprometida.

Día 0, un pentester, hacker o como quiera llamarlo descubre una vulnerabilidad en un código y lo publica en internet

Los primeros datos apuntan a que la vulnerabilidad encontrada afecta a un software muy extendido de creacion de blogs y paginas webs llamado Drupal. Esta vulnerabilidad a las versiones 7.31 y 7.32. En el siguiente video aparece un chico asiático, Pichaya Morimoto, describiendo esta vulnerabilidad en el CORE de Drupal 7.31. En el vídeo está utilizando herramientas como son plugins para la navegación, creemos que hackbar, un editor de textos para ver el código y alguna herramienta más como burp suite, además hace uso de una máquina para pruebas. Sí, más o menos, así es como los pentesters descubren la mayoría de los fallos, trabajando en encontrarlos. El vídeo está en en Tailandés, supongo, así que recomendamos poner los subtítulos en inglés.

 

Día 1, alguien ve el vídeo o encuentra la vulnerabilidad publicada y desea crear una script que la explote

Esta vulnerabilidad podría hacer que un atacante cambiase la clave del administrador del CMS, consiguiendo por supuesto el control total sobre el contenido del mismo. Por supuesto, no han tardado mucho en sacar un script que pueda explotar esta vulnerabilidad de forma casi inmediata, que el core de Drupal sea la versión 7.31 o 7.32 no importa, porque la vulnerabilidad es la misma. Drupal no ha parcheado o no se ha enterado hasta la fecha.

< ?php
//    _____      __   __  _             _______
//   / ___/___  / /__/ /_(_)___  ____  / ____(_)___  _____
//   __ / _ / //_/ __/ / __ / __ / __/ / / __ / ___/
//  ___/ /  __/ ,< / /_/ / /_/ / / / / /___/ / / / (__  )
// /____/___/_/|_|__/_/____/_/ /_/_____/_/_/ /_/____/
// Poc for Drupal Pre Auth SQL Injection - (c) 2014 SektionEins
//
// created by Stefan Horst <stefan.horst@sektioneins.de>
//        and Stefan Esser <stefan.esser@sektioneins.de>
//·
  
include 'common.inc';
include 'password.inc';
[resto del codigo]  

 

Día 2, A partir de este día muchas webs empiezan a verse afectadas

Una vez echo publico el bug, un “chico malo” un poco listo, piensa que “¿por que no lo explotamos para poner nuestras cosas?”. Dicho y echo, la tarea de automatizar la explotación de la vulnerabilidad y poner o modificar los contenidos de estas webs es un juego de niños para esta gente.Para tener una lista mas o menos actualizada de webs vulnerables se valen de repositorios públicos de este tipo de datos como Shodan.

Una vez tienen el sistema de automatización creado con la lista de maquinas vulnerables, solo falta lanzar lo a la red para explotar esos sistemas.

Las páginas web aparecen defaceadas o con cosas que no deberían estar publicadas y algunos usuarios enfadados porque la página ha desaparecido. Los malos, hacen uso de herramientas automatizadas o simplemente realizan el ataque manualmente.

Muchos clientes contactan con sus respectivos servicios de soporte del hosting, que además les dirá que es un problema de seguridad del CMS y que no es problema de ellos, que reinstales la página web y/o los backups.

Día 3, TeamSec empieza a recibir llamadas para securizar la web Drupal

Para una empresa o particular que su negocio dependa de Internet es un problema muy serio tanto por el tiempo perdido como por el dinero que puede costar la reparación o recuperación. Estos costes suponen que los responsables sepan reinstalar y/o recuperar un backup. De no ser así deberían de contratar a alguien que pueda realizar esas tareas. Deberá de comprobar que una vez recuperado el sistema vuelve a su estado anterior, eso si contar que puede perder datos por el camino.

En resumidas cuentas para una empresa le supone asignar recursos que se dedican a otras tareas para resolver el problema. Mientras que el problema persiste se esta perdiendo dinero.

Este tipo de ataques se producen en un tiempo muy corto desde que se descubre la vulnerabilidad hasta que se se automatiza y empieza a afectar a toda clase de servicios. Dado este corto periodo de tiempo, comprendemos que los administradores, o gerentes de las empresas no tienen tiempo para estar al tanto de los problemas de seguridad que pueden afectar a su plataforma, con llevar el día a día de la empresa tienen mas que suficiente. Ahí es donde entra en juego las empresas de seguridad lógica con un nutrido grupo de profesionales que están al tanto de las noticias, fallos, y demás anomalías que pueden afectar a su plataforma.

Como hemos comentado en mas de una ocasión, a Vd como empresa no les atacan por que se dediquen a esto o a lo otro, o por que tenga una mejor o menor publicidad, simplemente le atacan a su empresa por que han descubierto que su empresa es vulnerable. Aquí es donde entra en juego las empresas de seguridad. Vd se gasta dinero en puertas de entrada a sus oficinas cada vez mas seguras, en cerraduras infranqueables, etc. Si Vd tiene una pagina web, blog o escaparate en Internet, estas también tienen que estar protegido como sus oficinas. Por que al final es la cara y parte de su Marca que presenta al mundo.

TeamSec le puede ayudar en estas tareas. Le ahorrara tiempo al no tener que preocuparse de la seguridad integrar de su empresa. Le ahorrara dinero evitando que sus sistemas tengan fallos o estos sean explotados por personal ajeno que le supondrían un problema de imagen de Marca, Reputación, posibles demandas, etc, que al final se traduce en dinero. Contamos con el mejor equipo de expertos en seguridad que le ayudaran ahorrarse dinero evitando que le pasen problemas.

 

Más info sobre esta vulnerabilidad calificada con categoría de riesgo muy alto:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE: 2014-3704