Inyección SQL: UNION SELECT y la devolución de una 'palabra clave' para encontrar columnas explotables

6

Tengo un problema con el que espero que alguien pueda ayudarlo con respecto al uso de UNION SELECT , de una manera automatizada / con script para encontrar columnas que sean explotables (ya ha encontrado el número de columnas que usan ORDER BY )

Haciendo esto manualmente

Utilizando http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,4,5,6,7,8-- Estoy al tanto de que puedo ver manualmente los números de columna que aparecen en la página para encontrar las columnas que se pueden explotar, pero es extremadamente difícil probar y analizar el contenido de la respuesta o el origen de la página con una script de una forma automatizada para encontrar las columnas expolables que se revelan (a menos que alguien sepa de una manera confiable que esto se puede hacer?).

Automatizar esto utilizando un escáner / fuzzer

En algunas herramientas de inyección de escáneres / fuzzers y sql, he encontrado algunas referencias para obtener el UNION SELECT para devolver una 'palabra clave' específica en la página que indicará que esta columna en particular es explotable. si esa 'palabra clave' se encuentra en el contenido de la respuesta ...

Por ejemplo:

http://www.site.com/index.php?id=-2 UNION SELECT "EXPLOITABLE",2,3,4,5,6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,"EXPLOITABLE",3,4,5,6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,"EXPLOITABLE",4,5,6,7,8--   <-- The word EXPLOITABLE **DID** appear on the page content so this column **IS** exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,"EXPLOITABLE",5,6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable
http://www.site.com/index.php?id=-2 UNION SELECT 1,2,3,4,"EXPLOITABLE",6,7,8--   <-- The word EXPLOITABLE did not appear on the page content so this column is not exploitable

y así sucesivamente hasta que llegue a la última columna número 8 .......

La 'palabra clave' es una palabra que normalmente no se encuentra en una página web, por lo que se evitan los falsos positivos, por ejemplo, EXPLOITABLE, InJeCtAbLE, AASSDDFFGG (o cualquier variable que desee).

El problema que tengo:

Mientras escribo una herramienta de inyección de sql / fuzzer busco la mejor manera de encontrar estas columnas explotables de forma automatizada / programable y el método más lógico parece ser el descrito anteriormente usando la 'palabra clave' ( a menos que alguien pueda sugerir una mejor manera)

Esto se debe a que entonces solo puedo GET cada url con UNION SELECT y la 'palabra clave', almacenar el contenido de respuesta y luego ver si la variable 'palabra clave' que usé aparece en el contenido de respuesta. Si lo hace, entonces sabré que es explotable, si no, me moveré a la siguiente URL y así sucesivamente hasta que el script haya intentado esto en todos los números de columna.

¿Sería este el método mejor / más confiable para determinar columnas explotables utilizando UNION SELECT o puede sugerir algún método mejor para usar?

    
pregunta perl-user 04.04.2013 - 16:32
fuente

1 respuesta

2

Este es una de las mejores maneras de hacerlo, pero tenga cuidado con los problemas de inyección basados en errores. Es posible que cada resultado individual muestre el token aleatorio en la salida porque cada columna está vinculada a un resultado entero, y una cadena causará un error de conversión. En tal caso, la única forma de detectarlo es buscar mensajes de error típicos del servidor SQL / MySQL / PostgreSQL en la salida y buscar un conteo diferente del token en la página.

    
respondido por el Polynomial 04.04.2013 - 17:06
fuente

Lea otras preguntas en las etiquetas