¿Qué es una inyección SQL y cómo se lleva a cabo?

De seguro has oído hablar de que una inyección SQL es útil para infiltrarse en una página web y obtener contraseñas y nombres de usuario, números de tarjetas y pines. Pues, es cierto que la inyección SQL te puede ayudar a hacer eso. Sin embargo, ¿sabes qué significa SQL? ¿Sabes lo que es? Muchos tal vez sí, pero si estás aquí es porque no lo sabes. Y ahora te aclararé lo que significa y es SQL.

Luego de varios meses de estudiar la seguridad informática y diferentes tipos de lenguajes, así como investigar en diversos foros y blogs sobre hacking, he logrado recopilar la suficiente información para hablarte sobre una inyección SQL.

Observa cómo define Wikipedia, la enciclopedia libre, a SQL: "es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas".

En otras palabras, SQL (por sus siglas Structured Query Language) es un lenguaje que te permite accesar a la base de datos de una página web, conteniendo toda clase de información importante y confidencial.

Entonces una inyección SQL, como lo dice su propio nombre, consiste en inyectar un código intruso, valiéndose de una vulnerabilidad informática que esté presente en una página, para poder accesar a la base de datos de la misma.

Se dice que hubo una inyección SQL cuando cuando se inserta el código SQL invasor  dentro del código SQL programado anteriormente, a fin de alterar el funcionamiento normal de programa o página web. De modo que el código invasor llega a reposar en la base de datos, teniendo así acceso a la información dentro de la misma.

Te daré un ejemplo de una inyección SQL.

Supongamos que en una aplicación web vulnerable existe un parámetro llamado "nombredeUsuario", que contiene el nombre de usuario a consultar. Una inyección SQL se podría provocar de la siguiente forma:

Esto es lo que ocurre en lenguaje SQL cuando escribes un nombre de usuario. Es decir, la instrucción que la máquina realiza es la siguiente:

Para códigos normales de la máquina utilizaremos el color verde. Para los códigos malintencionados, utilizaremos el color rojo. Y para la información solicitada utilizaremos el color azul.

consulta:= SELECT *FROM usuarios WHERE nombre = 'Juan'

Nada extraño sucederá, puesto que es la forma normal en la que se solicita el nombre de usuario.

Ahora bien, alguien malintencionado podría inyectar el siguiente código (si el sitio es vulnerable solamente):

Juan'; DROP TABLE usuarios; SELECT *  FROM datos WHERE nombre LIKE '%

Como resultado del anterior código inyectado, se hace la siguiente consulta en el programa:

SELECT * FROM usuarios WHERE nombre = 'Juan';
DROP TABLE usuarios;
SELECT * FROM datos WHERE nombre LIKE '%';

En la base de datos se lleva a cabo la orden dada, se seleccionarían los registros con el nombre Juan, se borraría la tabla 'usuarios', y finalmente se selccionaría toda la tabla de 'datos', que no debería estar disponible para los usuarios web comunes.

Luego de esto, es posible modificar cualquier dato de la base de datos. 

Ahora bien, ¿a qué sitios de Internet es posible hacerle una inyección SQL?

En un próximo artículo se tocará este tema. Mientras tanto, te dejo un vídeo de una inyección SQL.


Si quieres descargar el programa Havij, haz click aquí:


No hay comentarios:

Publicar un comentario