A través de una interfaz de línea de comandos, se puede recuperar la base de datos (s) estructura, inyectar sus propias consultas SQL (aunque sean complejas), descargar archivos desde el servidor Web, el sitio web para rastrear directorios escribibles, cargar y controlar una puerta trasera, clonar la base de datos (s), y más …
sqlsus se centra en la velocidad y eficiencia, optimizando el espacio disponible inyección, haciendo el mejor uso (se me ocurre) de las funciones de MySQL.

Se utiliza subconsultas apiladas y un algoritmo potente de inyección ciega para maximizar la información obtenida por golpe del servidor web.

El uso multithreading encima de eso, es un dumper sqlsus de base de datos extremadamente rápida, ya sea en banda o por inyección ciega.

Si los privilegios son lo suficientemente altos, sqlsus será de una gran ayuda para cargar una puerta trasera a través del punto de inyección, y toma de control del servidor web.

Se utiliza SQLite como backend, para un uso más fácil de lo que ha sido objeto de dumping, e integra las funciones habituales ,como soporte para cookies, calcetines / proxy http, https ..

SINTAXIS

sqlsus [opciones] [config file]

OPCIONES

-h –help Breve mensage de ayuda
-v –version Informacion de la version
-e –execute <commands> Ejecuta comandos y sale
-g –genconf <filename> Genera el archive de configuracion

EJEMPLOS

Cuando se inicia una nueva sesión (nuevo objetivo), la forma más sencilla es la de generar un fichero de configuracion

sqlsus -g vuln.conf

Ahora habrimos el fichero para editarlo

sqlsus vuln.conf
nano vuln.conf

Bajamos a la linea que pone or $url start=””; e insertamos la url

$url start=”http://glyffo.se/show.php?id=1“;

Para guardar los cambios, pulsaremos la combinación de teclas Control+o y para salir Control+x

Creamos una session con la url seleccionada

sqlsus vuln.conf

Ejecutamos el comando start y dejamos que trabaje

start

Obtenemos un item con el siguiente commando

get <item>

Posibles items

Vamos a ver las tablas

get tables

Echamos un vistazo y vemos una tabla que nos interesa, terminada en _users, vamos a verla con el siguiente comando

get columns [nombre de la tabla]

get columns iimyj1ieo_users

Probamos a injectar a ver que pasa, con el siguiente comando

select * from iimyj1ieo_users

Vemos que el usuario es “glyffo” y el pass es un hash, lo copiamos y procedemos a descodificarlo con alguna herramienta de Offline Atacks tipo hashcat.

Cerramos sesion

exit

Otros metodos

Si no desea ejecutar sqlsus interactivamente, utilice la opción

-e|–execute

switch, es decir:

sqlsus vuln.conf -e ‘start;get tables;get columns;clone’

Puede especificar varios comandos delimitada por ;

Sólo lo que difiere de los valores por defecto son necesarios en el archivo de configuración, lo que le permite tener un archivo de configuración muy pequeño.

Tenga en cuenta que package conf; es necesario en la parte superior de su archivo de configuración.

Todos los valores especificados en el archivo de configuración será anulado por las variables que se pueden establecer en sqlsus usando “set“, siempre que $allow_override == 1 (que es el valor predeterminado)

Por ejemplo:

– Primera ejecución, inicie sqlsus con ninguna cookie definida

sqlsus cookie var == conf cookie var == EMPTY

– Segunda pasada, se configura una cookie en el archivo de configuración

Resultado: la variable de cookie sqlsus (es decir: una cookie vacío) anulará la cookie especificada en el archivo de configuración.
En este caso, se desea cambiar el valor de la cookie dentro sqlsus utilizando set cookie <cookie>

Este comportamiento le permite adaptar sqlsus a su destino sin la necesidad de salir sqlsus, cambiar el archivo de configuración, el fuego de sqlsus nuevo, etc ..

Para generar el archivo de configuración que refleje su configuración actual, puede utilizar genconf <filename> dentro sqlsus.

Inband / Blind

En banda significa que la respuesta será visto a través del mismo canal de la inyección se llevó a cabo (el resultado de la consulta será en el HTML)

Blind significa que el resultado no puede ser leída directamente, y que tenemos que adivinar lo que es.

Para que ambos realmente rápido, sqlsus utiliza algunas interesantes características, para hacer frente al hecho de que MySQL no admite consultas apilados y que no había ninguna función SLEEP antes de MySQL 5.0.12

El modo en banda, sqlsus se acumulará subconsultas como mucho puede por consulta, siempre y cuando no sea golpeado o max_subqueries max_sendable.

En el modo Blind, sqlsus hará lo siguiente:
-de acuerdo con cada elemento con un conjunto de expresiones regulares, para reducir el espacio de caracteres a utilizar para el elemento de ataque de fuerza bruta.
-encontrar la longitud del elemento
-bruteforce cada personaje con el espacio de caracteres que se encuentran (o utilizando default_range si no lo eran)

Las tareas se dividen por hilo (en realidad, proceso):
-coincide con RE + encontrar la longitud
-bruteforce caracteres

sqlsus se encargará de que los hilos siguen siendo tan ocupada como sea posible, y siempre y cuando tenga sentido (evitar golpes innecesarios).

Tenga en cuenta que en el modo en banda, es generalmente una buena idea para hacer la consulta no retorno real (append “AND 1=0” for example)

Comandos

Ayuda en línea está disponible en sqlsus.

Escriba help o help <command>

Usted puede romper comandos usando Ctrl-C. Se puede tomar algún tiempo para detenerse en realidad, de modo que usted puede tener resultados explotables cuando se rompe un excesivamente largo SELECT.

Archivo de configuración

Se puede generar un archivo de configuración con valores predeterminados sqlsus utilizando:

sqlsus –genconf my.cfg

El archivo resultante tiene la documentación en línea.

SQLite backend

Puede acceder al backend SQLite directamente desde la línea de comandos con SQLite3.

Las consultas y la tabla asociada se almacenan en las queries de tabla.

Los nombres reales de las columnas se almacenan en las tables de la tabla.

bases de datos de la estructura de las databases de datos de mesa, la historia de la history de la tabla, los privilegios de privileges y variables de la tabla (lo sorprendente) variables.

Para almacenar los resultados de las consultas, sqlsus no utiliza nombres reales de columna directamente a evitar varios posibles problemas, algunos de los cuales son palabras reservadas y citas (por ejemplo: si usted proporciona select NULL, sqlsus tendría que crear una columna llamada NULL, que no se ser permitido.). Este comportamiento también se evita sqlsus de ser el objetivo de la inyección de SQL.

Cuando se utiliza clone, las tablas / columnas resultantes son reales, nombres reales, por lo que puede “modificar” la base de datos SQLite3 con directamente.

Bajo el capó

Buscar la ventaja
La idea de ir a buscar la ventaja es obtener resultados útiles tan rápido como sea posible.

Por lo tanto, cuando la cantidad de datos que se devuelven no se conoce, sqlsus será ir a buscar los N resultados por delante, haciendo uso de la N temas definidos por el usuario después de pulsar Intro, en lugar de esperar a que un hilo para hacer un select count () y sólo entonces comenzar a utilizar todos los hilos para recuperar los datos.

Además, puesto que el usuario puede romper la instrucción select cuando quiere, tiene más sentido tener resultados útiles en lugar de la cantidad de resultados esperados Smile

Tenga en cuenta que en modo ciego, se requiere saber la cantidad de datos a buscar, por lo que en este caso, ir a buscar-por delante sólo se aplica para obtener resultados completos fueron solicitados, de nuevo para tener información útil cuando un usuario rompe el comando.

inband

En el modo de banda (cuando el resultado de la consulta será en el HTML), si su pregunta devuelve mas de una fila, sqlsus utilizará subconsultas tantos puede utilizar al mismo tiempo (por consulta), está bajo un límite configurable.
Por lo tanto, pueden tomar hasta miles de registros en el servidor de sólo 1 golpe (según el espacio disponible de la inyección) (cf banda demo)
Además, es obvio que utiliza varios subprocesos para acelerar las cosas.
El uso de “autoconf” comandos, puede dejar que sqlsus encontrar los mejores valores para maximizar los datos devueltos por golpe-servidor.

blind

En el modo ciego, sqlsus hace el mejor uso de los niños bifurcado de modo que sean tan ocupado como sea posible, realizar tareas pertinentes.

No recupera los datos de un registro poco a poco, lo que seria una gran perdida de tiempo

El algoritmo simplificado ciego se comporta de esta manera (por ejemplo: una consulta de selección devolveria varies filas de varias columnas):

0.Engendro niños

1.Dar a todos los niños disponibles un registro para encontrar la longitud de, y coinciden contra una expresion regular.

Las expresiones regulares que coinciden se basan en los registros más típico que se encuentran en una base de datos (alpha_lower, alfa, hex, numéricas …)

Encontrar primero la longitud de los caracteres existentes evita el desperdicio de exitos para el ataque contra el servidor por fuerza bruta.
Adaptación de la partida contra una expresión regular reduce mucho el número de golpes requerido por la búsqueda binaria (alrededor del 30% menos de visitas requeridas para los registros típicos).

2 Hacer a cada niño disponible una char de fuerza bruta para encontrar la longitud del conjunto de registros que conocemos + regex .

3 Cuando se encuentra un registro completo, almacena y asigna a un niño para encontrar de la longitud+regex del siguiente registro [1] (los otros niños todavía estarán en bucle [2]).
Al principio buscamos al mismo tiempola longitud + regex de todos los registros. Así que si el usuario quiere romper el comando, tendrá resultados utilizables tanto como sea posible.