Está en la página 1de 5

WEB HACKING Atacando DOJO Vulnerabilidades SQL Injection en Hackme Casino

En la entrada anterior, se hablo un poco sobre una aplicacin vulnerable incluida en Dojo llamada HacMe Casino, se realizo un proceso de recoleccin de informacin muy rpido (de hecho, insuficiente, pero muy ilustrativo) para determinar la plataforma utilizada por la aplicacin y se encontr una posible vulnerabilidad de tipo SQL Injection, en esta entrada, se utilizarn herramientas tales como SQLMap para detectar y explotar otras fallas de seguridad encontradas en esta aplicacin. Cabe anotar, que en esta entrada y en la prxima, se asumir que el enfoque seguido es el de Caja Negra es decir, que toda la informacin ser extrada sin disponer del cdigo fuente de la aplicacin, en el caso contrario, se utilizara un enfoque que Caja Blanca en tales casos, el pentester cuenta con el cdigo fuente de la aplicacin y en consecuencia podr realizar un anlisis mucho ms profundo de las funciones del sistema. Evidentemente, desde el punto de vista de la seguridad ofensiva ambos enfoques son importantes, pero realizar pruebas de caja negra, permite de alguna forma, ponerse en el lugar de un atacante, el cual necesita recolectar toda la informacin que pueda para entender el sistema y en la mayora de casos no cuenta con el cdigo fuente. A menos claro, de que la aplicacin objetivo sea opensource, en tal caso podra disponer tambin del cdigo fuente y realizar, del mismo modo, pruebas de caja blanca.

Recoleccin de Informacin con SQLMap


Aunque en este blog no se han escrito artculos sobre SQLMap, existen numerosos recursos en internet que mencionan sus funcionalidades y se ha convertido en una herramienta casi que imprescindible para la ejecucin de pruebas de seguridad en aplicaciones web. Se trata de una herramienta que cuenta con una buena cantidad de opciones y que permite explotar vulnerabilidades de SQL Injection sobre motores de bases de datos tan populares como MySQL, Oracle, SQL Server o Postgres. Puedes encontrar ms informacin en: http://sqlmap.org/ Ahora bien, retomando la publicacin anterior, hemos encontrado una posible vulnerabilidad del tipo SQL Injection en la pgina de login, dicha vulnerabilidad, al estar relacionada con el proceso de login puede llevar a un Bypass Authentication que si bien es fcilmente reproducible, puede ser tambin de gran ayuda para recolectar informacin sobre el sistema vulnerable, informacin que puede darnos la llave a muchas puertas y aunque HacMe Casino es una aplicacin deliberadamente insegura, las herramientas que pueden usarse contra esta herramienta al igual que las tcnicas de ataque empleadas, son ms o menos un procedimiento bastante comn y estndar para muchos de los atacantes que andan por ah. El formulario vulnerable se encuentra en http://192.168.1.41:3000/account/login y los parmetros que utiliza son user_login, user_password, x, y. Estos parmetros son enviados en el cuerpo de la peticin utilizando el mtodo HTTP Post, aunque estos parmetros no viajan en la URL (mtodo GET) es bastante sencillo descubrirlos utilizando herramientas como Burp Proxy, numerosas extensiones de Firefox como Live HTTP Headers o Tamper Data. En fin, es relativamente fcil capturar los parmetros que viajan entre cliente y servidor. En este punto nos interesa el parmetro user_login, dado que es probable que sea un parmetro inyectable. De este modo, podemos comenzar a utilizar SQLMap para determinar si dicha pgina es vulnerable y de ser as, proceder a extraer informacin. Para ello se emplean las siguientes opciones de SQLMap: -u / url: Permite indicar la URL objetivo. data: Permite especificar valores a parmetros que deben viajar por POST. level: Permite indicar el nivel de pruebas a ejecutar. (entre 1 y 5, siendo 5 el valor ms alto y en el

que se incluyen ms pruebas. El valor por defecto es 1). Con estas sencillas opciones, es posible ejecutar SQLMap contra el objetivo y tratar de extraer la mayor informacin posible ./sqlmap.py -u http://192.168.1.41:3000/account/login” data=user_login=adastra -v 2 level=5 Despus de ejecutar el comando anterior contra HacMe casino, los resultados ms relevantes pueden apreciarse en la siguiente imagen:

Con los resultados entregados por SQLMap, ahora sabemos que se trata de una base de datos SQLite y adems hemos confirmado que el formulario de login es vulnerable a Blind SQL Injection dado que el parmetro user_login ha resultado ser inyectable. Ahora viene el momento divertido en el que podemos comenzar a extraer informacin de la base de datos. Para este proposito SQLMap cuenta con un listado de opciones muy interesante que permite, entre otras cosas, listar nombres de esquemas de bases de datos, tablas e incluso generar una shell sobre el sistema objetivo con la cual se podrn ejecutar comandos. Algunas de estas opciones son: dbs: Permite enumerar los esquemas de bases de datos existentes el motor en ejecucin del objetivo. tables: Permite listar las tablas de un esquema de base de datos concreto. (Suele usarse con la opcin -D la cual permite indicar que esquema de base de datos utilizar). columns: Lista las columnas de una tabla determinada. Suele utilizarse dump: Permite extraer la informacin contenida en una tabla concreta del objetivo (Suele usarse con la opcin -T la cual permite indicar que tabla utilizar y la opcin -D para seleccionar el esquema de base de datos.) dump-all: Permite hacer la extraccin de los registros de todas las tablas. -b / banner: Ensea el banner de la base de datos del objetivo. current-user:Ensea el usuario utilizado para ejecutar consultas en la base de datos. current-db: Ensea el esquema de base de datos utilizado por el objetivo (aplicacin web) schema: Ensea los esquemas disponibles en la instancia de base de datos.

all: Ejecuta todas las opciones de enumeracin listadas anteriormente. La opcin ms completa para realizar todas las pruebas de enumeracin disponibles en SQLMap contra un objetivo vulnerable es all. La siguiente imagen ensea los resultados contra HacMe Casino.

Como puede apreciarse, hay mucha informacin que no es posible extraer, principalmente porque no es soportada por SQLite, el cual es un motor de bases de datos muy simple y liviano, utilizado principalmente para proyectos pequeos que no necesitan un modelo de datos relacional como el caso de bases de datos mucho ms robustas y potentes, como por ejemplo Mysql, Oracle, SQLServer o PostgreSQL. Aunque no sea posible enumerar demasiada informacin, hemos conseguido determinar que la vulnerabilidad es explotable y que puede brindar un punto de acceso valido a la aplicacin, lo cual en la mayora de los casos es ms que suficiente. Por otro lado, tambin es importante resaltar que SQLMap no solamente permite enumerar informacin de la base de datos, sino que tambin permite generar una shell sobre el sistema objetivo y ejecutar comandos contra un objetivo utilizando TOR (esto lo explicar en otra publicacin). Sin embargo, desafortunadamente en el caso de Hacme Casino, al utilizar SQLite como base de datos, no es posible utilizar caractersticas como la generacin de una shell, dado que el motor es tan simple que no soporta la ejecucin de comandos del sistema operativo. Las opciones utilizadas para tal fin son: os-shell y os-pwn la ltima opcin permite generar una shell independiente del interprete del sistema operativo del objetivo, pudiendo utilizar meterpreter o VNC.

Tal como se ha mencionado, no es posible ejecutar comandos por medio de SQLite y la imagen anterior ensea un mensaje de error indicando este hecho, sin embargo la vulnerabilidad descubierta es suficientemente interesante por si misma, ya que indica que es posible saltarse el sistema de autenticacin y acceder al sistema como alguien ms, tal como ensea las siguientes imgenes.

Ahora podemos jugar en el nombre de andy_aces sin tan siquiera conocer su password. Pero aqu no termina, en una prxima entrada hablar sobre algunas otras vulnerabilidades existentes en Hacme Casino y formas de explotarlas.

También podría gustarte