Archivo de la etiqueta: SQL Injection

Podcast – 18 – Inyección SQL a ciegas

En el capítulo de hoy hablaremos sobre los ataques por inyección SQL a ciegas: aquellas donde la base de datos no devuelve la información solicitada en el ataque.

Blind SQL Injection

Fuente imagen:Muratkaya

Al contrario que en el capítulo anterior sobre inyecciones SQL, donde el atacante obtenía la información solicitada desde la propia base de datos, en este capítulo veremos cómo sacar información de una aplicación simplemente viendo la diferencia de comportamiento cuando el resultado de nuestra consulta es falso o verdadero.

Como en casi todos los capítulos, tras la explicación del ataque y sus características indicamos las posibles defensas tanto para bloquearlos como para minimizar sus efectos. En este caso cabe destacar cómo podemos evitar la automatización de los ataques por inyecciones SQL a ciegas de forma simple en todas nuestras aplicación web.

Descarga directa.

Podcast – 17 – Inyección SQL

Micro con feed

Fuente imagen:PerfectYourPodcast

En el capítulo de hoy intentaré explicar porqué aparecen las vulnerabilidades de Inyección SQL en las aplicaciones web, en base al funcionamiento general de dichas aplicaciones. Quizás antes de escucharme te interese leerte el artículo de la Wikipedia donde lo explican con un ejemplo bastante claro.

Igualmente explico como una correcta fortificación de la aplicación web y de la base de datos que corre detrás, puede minimizar el daño producido por este tipo de ataques.

Los ataques Blind SQL Injection quedan para otro día 🙂

Descarga directa.

Micropíldora 3 – Protege tu Apache contra SQL Injection

Los ataques SQL Injection son los más comunes en el mundo web y uno de los primeros que e suelen probar contra los servicios web de cualquier empresa.  Los ataques más básicos de esta categoría consisten en solicitar información no prevista a la base de datos de tal manera que bien nos la muestre en pantalla o bien que la podamos deducir (Blind SQL Injection). Esta solicitud de información suele realizarse añadiendo instrucciones SQL a la petición normal de tal forma que el servicio responda, además de la petición original y legítima, con la información que solicita el atacante o bien de tal forma que se pueda extrapolar. El funcionamiento de los ataques a ciegas (Blind SQL Injection) se tratará en su propio artículo.

Ejemplo ficticio de ataque SQL donde se solicitaría la versión de la base de datos que funciona tras la página web:

http://www.webvictima.com/?id=1 union select @@version()

Las instrucciones SQL utilizan diferentes palabras claves por lo que intentar localizarlas en las cadena de texto de las peticiones que llegan a nuestro navegador podría servir como medida de protección ante estos ataques. En el siguiente código se busca las palabras claves union y select dentro de la URL solicitada y en caso de encontrarlas se devolverá la página de error 404 (Page Not found) que haya definida en la configuración del servidor Apache. Como una de las técnicas básicas de los atacantes para evitar ser detectado es ofuscar las cadenas de peticiones para evitar su fácil detección se han incluido las conversiones de las cadenas de caracteres en formatos hexadecimal y Unicode que suelen ser utilizados:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^.*(union|%75%6E%69%6F%6E|&#117;&#110;&#105;&#111;&#110;).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(select|%73%65%6C%65%63%74|&#115;&#101;&#108;&#101;&#99;&#116;).* [NC]
RewriteRule . – [R=404,L,NC]
</IfModule>

Este truco supone que el servidor Apache tiene correctamente activado y configurado el módulo de rewrite y se ha definido correctamente la página de error 404. Como siempre que se tocan ficheros de configuración haced una copia de seguridad antes 😉