Manual en Español de BSQL Hacker – aplicación automatizada de inyecciones SQL

Traducción del manual de  BSQL Hacker (una aplicación automatizada de inyecciones SQL) a español. Una completa herramienta muy configurable y recomendable para auditores de seguridad y webmasters.

La web oficial es http://labs.portcullis.co.uk/

Para descargar la aplicación: descargar

BSQL Hacker

 BSQL (Blind SQL) Hacker es un aplataforma automatizada de inyecciones SQL / Herramienta diseñada para explotar vulnerabilidades de inyección SQL ciegas en cualquier base de datos.

 BSQL Hacker es apropiado tanto para usuarios con experiencia, coo para principiantes que quieran automatizar sus inyecciones SQL ciengas. 

Comienzo Rápido

  Si usted ya es buen conocedor de las inyecciones SQL y esta buscando una nueva heramienta para automatizar sus ataques, usted debe ir

directamente a los “archivos de ataque” y comprender el sistema de ataque completamente,si no lo es, puede probar con los “Archivos de ataquue”

de plantillas y el asistente de inyecciones SQL.

BSQL Hacker para cualquiera

  Si solo quiere realizar la explotación presionando el botón “play” siga leyendo, si no lea la sección BSQL Hacker para usuarios avanzados para comprender como puede crear sus propias inyecciones.

 Esisten 3 formas de lanzar un ataque:

  1. SQL Injection Wizard (asistente de inyecciones SQL).
  2. Cargando una plantilla de ataque o un exploit.
  3. Creando inyecciones específicas (requiere buen conociemiento de inyecciones SQ

 En la mayor parte de los casos comunes las Plantillas y el asistente deberían ser bastante pero usted puede querer hacer algunos trucos avanzados o evitar alguna restricción extraña. Entonces usted tiene que suministrar sus propias inyecciones. Después de que usted cree una nueva inyección puede salvar como una nueva plantilla de Archivo de Ataque.

 Usted siempre puede comenzar intentando el asistente de Inyección SQL. Esto le permite comenzar un nuevo ataque de la Petición de la URL. Esto probará su inyección para bases de datos soportadas(mirar Bases de datos soportadas para el assitente de Inyección SQL). Después de que usted lo consigua, puede realizar ajustes y reanudarlo.

 Si esto no funciona, y sabe la razón, se pueden solucionar desede la GUI realizando los ajustes necesarios y comenzar el ataque nuevamente.

BSQL Hacker para usuarios avanzados

 Como usted sabe la Inyección SQL  ciega se basa en  respuestas Verdaderas y Falsas. para ser capaz de escribir sus propios archivos de ataque o manejando algunos ataques extraños, usted tiene que conocer  bien los siguientes aspectos:

  •  Inyecciones ciegas SQL
  •  Las funciones de las bases de datos de su objetivo
  •  El uso de las busquedas binarias medianteinyecciones ciegas SQL

Si usted no conoce estos puntos anteriores, todavía puede usar al Hacker BSQL mediante el asistente y las plantillas. Por favor vea la seccional Hacker BSQL para cualquiera.

BSQL el Hacker usa  Variables “Mágicas” para automatizar sus ataques. En una inyección SQL ciega se usa  la pareja de parámetros dinámicos:

  • Posición : {PSITION}
  • Operador comparación: {OPERATION}
  • Caracter a comparar: {CHAR}

Estas variables “mágicas” serán substituidas en marcha por el Hacker BSQL antes del enviar el ataque al objetivo. Esto permite automatizar muchos ataques fácilmente.

Ejemplo:

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),{POSITION},1)),0){OPERATION}{CHAR}–

Cuando usted da esta entrada al Hacker BSQL esto sustituirá la POSICIÓN, LA OPERACIÓN el CARCTER con valores requeridos en tiempo real.

Las inyecciones siguientes enviarán al servidor:

Consiguiendo 1 caracter:

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),1,1)),0)>78—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),1,1)),0)<78—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),1,1)),0)>54—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),1,1)),0)>54—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),1,1)),0)>66—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),1,1)),0)>72—

Siguiente caracter:

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),2,1)),0)>78—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),2,1)),0)>103—

http://www.ejemplo.com/default.asp?p=1 AND ISNULL(ASCII(SUBSTRING(CAST((USER)AS varchar(8000)),2,1)),0)>114—

Encima, claramente se ve como las variables “mágicas” se cambian. Ahora si queremos portar  este ataque a ORACLE podemos pasar con el ataque siguiente:

http://www.ejemplo.com/default.asp?p=1 AND NVL(ASCII(SUBSTR((SELECT user FROM dual)),{POSITION},1)),0){OPERATION}{CHAR}—

 Obiamente se pueden escribir ataques similares para otras bases de datos

  •  PostgreSQL
  •  SQL Server
  •  MySQL
  •  ORACLE

Bases de datos soportadas para el asistente de inyecciones SQL:

  •  MS SQL Server 2000 / 2005 y otras potencialmente
  • ORACLE
  • MySQL

Asistende de inyecciones SQL:

PAra que sea posible el uso del asistente de inyecciones SQL, debería conocer el parámetro vulnerable o la posición. Si conoce la posición viulnerable / parametro vulnerable tiene 2 opciones:

  • Nueva inyección SQLde cadenas de busqueda
  • Nueva inyección SQL por Peticiones  RAW

captura bsql hacker manual español 

  1. Asistente de Inyección Controlado (Ctrl + N)
  2. Escoja uno de los métodos siguientes:

          a. Si usted puede explotarlo con un simple GET escogen ” la Inyección en Querystring “

          b. Si es en el POST, o en alguna cabecera HTTP o  requiere una cookie(como la cookie de autenticación) entonces escoja ” de la Petición Raw”

Inyecciones con  Querystring

 Todo lo que necesita es pegar la URL del objetivo y chequear el parámetro vulnerable de la lista que se muestra, despues se hace click en finalizar.

 Es crítico dejar los valores por defecto del parámetro vulnerable. No añada ‘ o caracteres similares, solo mantenga el valor original. 

   

Inyecciones desde peticiones RAW

 Si usted quiere suministrar su punto de inyección de la Petición HTTP RAW, pegue su petición RAW (de su proxy por ejemplo), señalar su cursor en el lugar de inyección y luego pulsar ” insertar punto inyección” el botón. Esto pondrá {un X} que será la variable mágica en la posición  vulnerable.

  Usted debería suministrar  la petición RAW hecha por el browser al proxy, la petición debería incluir URL completa del objetivo como por ejemplo:

 POST http://ejemplo.com/?p=1 HTTP/1.1

en lugar de:

POST /?p=1 HTTP/1.1

 Despues se hace click en finalizar para comenzar con la inyección.

 Es crítico dejar los valores por defecto del parámetro vulnerable. No añada ‘ o caracteres similares, solo mantenga el valor original.

Este es un ejemplo correcto de una peticion HTTP raw :

GET http://example.com/?product_id=1{X} HTTP/1.1

Host: 192.168.2.55

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-gb,en;q=0.5 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: close

Proxy-Connection: close

Cookie: ASPSESSIONIDQQGQGKFU=OFLJAGDCEEEJFIBPCAODLAGP

Pragma: no-cache Cache-Control: no-cache 

Finalizar Inyección SQL

Cuando usted pulsa “finalizar” BSQL el Hacker intentará controlar la inyección y si esta tiene éxito esto le avisará y comenzará el proceso ” inyección automática ” . Si usted no quiere la inyección automática puede parar el proceso, realizar ajustes o cambios y realizarlo otra vez.

 Usando Archivos de ataque y plantillas de archivos de ataque

 ¿ Que es un archivo de ataque ?

 

Los archivos de ataque son archivos que se guardan/cargan en la interfaz del Hacker BSQL. Usted puede salvar y compartir sus archivos de ataque. Puede generar nuevos archivos de ataque específicos a la vulnerabilidad y también compartirlos como obra suya. ¿Mejor que escritura de 50 líneas de perl para cada vulnerabilidad BSQL?, ¿cómo?? Los archivos de ataque son XML simple y usted puede modificarlos con su editor de textos favorito.

¿Cuál es una Plantilla de Archivo de Ataque?

La Plantilla de Archivo de Ataque es una versión mejorada de archivos de ataque. Una plantilla puede hacer preguntas al usuario y puede rellenar la GUI según respuestas y valores en la plantilla de archivo de ataque.

Las Plantillas de Archivo de Ataque son útiles para ataques genéricos. En vez de un comenzar un ataque BSQL para MSSQL,usted puede cargar  una plantilla de trabajo específica para MSSQL, personalizarlo y controlarlo.

 ¿How to use Attack Files?

  1. Cargar el archivo de ataque “File > Load” o “Ctrl + O”
  2. Responder las cuestiones de la GUI (si las hay)
  3. Realizar ajustes (si los hay)
  4. Testear la inyección “Injection > Test Injection” o “Ctrl + T”
  5. Si el test es correctol, Comenzar ataque. “F5”

Rasgos de los archivos de ataque

Archivo de Ataque pueden llevar casi todo lo presentado en GUI, y usted también puede pedir variables. La petición para variables al usuario se realiza cuando van a ser explotdas las vulnerabilidades.

Asumamos  que usted escribe una archivo para BSQL que requiere la autenticación. Usted puede querer pedir al usuario sus cookies activas. O usted puede querer preguntar user_id que usted quiere leer del hash de contraseña, etcétera.

También usted puede crear un Archivo para el uso personal. Digamos que explota una Inyección SQL entonces puede guardar el archivo y usarlo más tarde o compartir con alguien con los mismos ajustes exactos que usted. 

Caracterícticas Importantes

  •  Modo Facil

           o Asistente para inyecciones SQL (SQL Injection Wizard)

  •  General

           o Rápido y Multi hilo

          o 4 soportes diferentes para inyecciones SQL

  • Inyecciones SQL ciegas (Blind SQL Injection)
  • Inyecciones SQL ciegas basadas en tiempo
  • Inyecciones SQL ciegas profundas ( basadas en retrasos tiempo avanzado)
  • Inyecciones SQLbasadas en error

          o Puede automatizar la mayoria de los nuevos métodos  inyecciones SQL

          o Soporta signaturas RegEx

          o Soporta GUI y consola
          o Soporta guardar y cargar archivos

          o Soporta Token / Nonce / ViewState etc.

          o Soporta sesion compartida
          o Configuracion avanzada
          o Modo de ataque automático, automaticamente extrae el equema y los datos de la base de datos

  •  Caracterícticas GUI

          o cargar/guardar
          o ataque con plantillas y archivos Los ususarios pueden guardar las sesiones y compartirlas. Algunas secciones como clave, nombre  o cookie pueden ser mostradas al usuario en la GUI)
          o Visualmente vea respuestas verdaderas y falsas así como la respuesta de HTML completa, incluyendo el tiempo y stats

  • Relacionado conexión

          o  Apoyo proxy (proxy de Apoyo autenticada)
          o  NTLM, autenticación básica de apoyo, por defecto el uso de credenciales del usuario actual o de la solicitud de
          o  SSL (también certificados inválidos) Apoyo
          o  Encabezado personalizado de apoyo

  •  Inyección de puntos (sólo uno de ellos o una combinación)

          o Cadena de consulta
          o Publicar
          o Encabezados HTTP
          o Cookies

  • Otros

          o Publicar datos de inyección se pueden almacenar en un archivo separado
          o XML de salida (no estables)
          o Protección CSRF, Viewstate o similares se pueden utilizar para separar las sesiones de acceso, sin pasar por las páginas de proxy etc

  • Requisitos

          o .NET Framework 2
          o No trabajar en mono (esperemos que pronto lo haga) 

Variables de “Mágicas”

Lista actual de magia las variables:

Parte genérica:
(X)
Marcas punto de inyección. Esto se sustituye por la inyección de SQL.

(INJECTION)
Marcador para los ataques automatizados. Este será sustituido con la frase ataque.

Inyección de SQL a ciegas relacionados

(CHAR)
De caracteres a comparar. Esto se sustituye por entero el carácter de representación que estamos comprobando.

(POSITION)
Posición del carácter que estamos recibiendo. Este será sustituido con la posición actual de la cadena.eL VALOR de esta variable puede ser controlado desde la GUI “Detección> Posición de inicio”

(OPERATION)
Operación de carácter binario de búsqueda / Ciegos de inyección de SQL. Durante la ejecución de esta puede ser igual, mayor o menor.

 Error de la base de inyección de SQL:

(ERROR_POSITION)
Posición inicial del buffer corriente de leer. Será reemplazado por posición.

(ERROR_BUFFER)
¿Cuántos caracteres para leer en un momento de un error, la base de inyección de SQL.

Inyección de SQL plena Ciegos relacionados

(SECOND)
¿Cuántos segundos a esperar. Puede configurar esto desde el GUI “Detección> Hora Basado> segundos a esperar”
Otro

(TOKEN)
Esta variable es usada para nonce, Viewstate o cosas similares. Se reemplazará con exctracted TOKEN en la solicitud. El GUI actualmente no es compatible con esta. Sólo admite la versión de consola este parámetro. 

Artículo de NovaInformatica