Saltar al contenido

Tutorial de inyección SQL: aprender con el ejemplo

Los datos son uno de los componentes más críticos de los sistemas de información. La organización utiliza aplicaciones web basadas en bases de datos para recuperar datos de los clientes. SQL Es el acrónimo de Structured Inquiry Language. Se utiliza para recuperar y manipular datos en la base de datos.

¿Qué es la inyección SQL?

La inyección SQL es un ataque que envenena las declaraciones SQL dinámicas para comentar ciertas partes de la declaración o adjuntar una condición que siempre será cierta. Aprovecha las fallas de diseño en aplicaciones web mal diseñadas para explotar declaraciones SQL para ejecutar código SQL malicioso.

En este tutorial, aprenderá técnicas de inyección SQL y cómo puede proteger las aplicaciones web de tales ataques.

Cómo funciona la inyección SQL

Los tipos de ataques que se pueden realizar mediante inyección SQL varían según el tipo de motor de base de datos. El ataque funciona en declaraciones SQL dinámicas.. Una declaración dinámica es una declaración generada en tiempo de ejecución utilizando una contraseña de parámetro de un formulario web o un cable de consulta URI.

Consideremos una aplicación web simple con un formulario de inicio de sesión. El código del formulario HTML se muestra a continuación.

<form action=‘index.php’ method="post">

<input type="email" name="email" required="required"/>

<input type="password" name="password"/>

<input type="checkbox" name="remember_me" value="Remember me"/>

<input type="submit" value="Submit"/>

</form>

AQUÍ,

Creemos que la siguiente es la declaración del fin de semana sobre la verificación de la identificación de usuario

SELECCIONAR * De los usuarios DONDE correo electrónico = $ _POST[’email’] Y contraseña = md5 ($ _ POST[‘password’]);

AQUÍ,

  • La declaración anterior usa los valores de $ _POST[] edite directamente sin esterilizarlos.
  • La contraseña se cifra mediante el algoritmo MD5.

Realizaremos un ataque de inyección SQL usando sqlfiddle. Abre la URL http://sqlfiddle.com/ en su navegador web. Obtendrá la siguiente ventana.

Nota: deberá escribir las declaraciones SQL

Paso 1) Ingrese este código en el panel izquierdo


CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
  
  
insert into users (email,password) values ('This email address is being protected from spambots. You need JavaScript enabled to view it.',md5('abc'));

Paso 2) Haga clic en Crear esquema

Paso 3) Ingrese este código en el panel derecho

seleccionar * de los usuarios;

Paso 4) Haga clic en Ejecutar SQL. Verás el siguiente resultado

Presentar suministros de usuario Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo. y 1234 como contraseña. La declaración sería la acción tomada contra la base de datos.

SELECCIONAR * De los usuarios DONDE email = ‘Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.‘Y contraseña = md5 (‘ 1234 ‘);

El código anterior se puede utilizar comentando en la sección de contraseña e ingresando una condición que siempre será verdadera. Es probable que un atacante proporcione la siguiente entrada en el campo de la dirección de correo electrónico.

Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.‘O 1 = 1 LIMITADO 1 -‘]

xxx para la contraseña.

La declaración dinámica generada será la siguiente.

SELECCIONAR * De los usuarios DONDE email = ‘Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.‘O 1 = 1 LIMITADO 1 -‘]Y contraseña = md5 (‘1234’);

AQUÍ,

  • Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo. termina con una cita que complementa la cita del cable
  • O 1 = 1 LIMITADO 1 es una condición que siempre será cierta y que limita los resultados devueltos a un solo registro.
  • – ‘Y … es un comentario SQL que elimina sus contraseñas.

Copie la declaración SQL anterior y péguela en el cuadro de texto FiddleRun SQL como se muestra a continuación

Actividad de piratería: inyección de aplicaciones web SQL

Tenemos una sencilla aplicación web en http://www.techpanda.org/ que es vulnerable a los ataques de inyección SQL solo con fines de demostración. El código de formulario HTML anterior se toma de la página de inicio de sesión. La aplicación proporciona seguridad básica, como proteger el campo de correo electrónico. Esto significa que nuestro código anterior no se puede utilizar para omitir el inicio de sesión.

Para lograrlo, podemos aprovechar el campo de las contraseñas. El siguiente diagrama muestra los pasos que debe seguir

Es probable que un atacante proporcione la siguiente entrada

  • Paso 1: Ingrese Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo. como la dirección de correo electrónico
  • Paso 2: Ingrese xxx ‘) O 1 = 1 -]
  • Haga clic en el botón Enviar
  • Serás llevado al tablero

La declaración SQL generada será la siguiente

SELECCIONAR * De los usuarios DONDE email = ‘Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.‘Y contraseña = md5 (‘ xxx ‘) O 1 = 1 -]’);

El siguiente diagrama muestra que se generó la declaración.

AQUÍ,

  • Es comprensible que se utilice el cifrado md5 en la declaración
  • Completa la cotización única y el corchete final.
  • Se agrega una condición a la declaración que siempre será verdadera

En general, un ataque de inyección SQL exitoso intenta una serie de técnicas diferentes como las descritas anteriormente para realizar un ataque exitoso.

Otros tipos de ataque de inyección SQL

Las inyecciones de SQL pueden hacer más daño que simplemente pasar los algoritmos de inicio de sesión. Entre algunos de los ataques

La lista de arriba no es exhaustiva; solo te da una idea de la inyección SQL

Herramientas automatizadas para inyección SQL

En el ejemplo anterior, usamos técnicas de ataque manual basadas en nuestro vasto conocimiento de SQL. Existen herramientas automatizadas que te ayudarán a realizar los ataques de una manera más eficiente y en el menor tiempo posible. Estas herramientas incluyen

Cómo prevenir ataques de inyección de SQL

Una organización puede adoptar la siguiente política para protegerse de los ataques de inyección de SQL.

Actividad de piratería: utilice Havij para la inyección de SQL

En este caso práctico, utilizaremos el programa Havij Advanced SQL Injection para escanear un sitio web en busca de vulnerabilidades.

Nota: su programa antivirus puede marcarlo debido a su naturaleza. Debe agregarlo a la lista de exclusiones o pausar su software antivirus.

La siguiente imagen muestra la ventana principal de Havij

La herramienta anterior se puede utilizar para evaluar la vulnerabilidad de un sitio web / aplicación.

Resumen

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *