Inyección SQL

Lección decimo quinta: XSS Cross-Site Scripting


La Inyección SQL es un conjunto de comandos SQL que se colocan en una cadena URL o en estructuras de datos para recuperar una respuesta que queremos de las bases de datos conectadas con las aplicaciones web. Este tipo de ataques generalmente se producen en páginas web desarrolladas utilizando PHP o ASP. NET.

Un ataque de inyección SQL puede hacerse con las siguientes intenciones:

  • Para volcar toda la base de datos de un sistema.
  • Modificar el contenido de las bases de datos.
  • Realizar diferentes consultas que no sean permitidas por la aplicación.

Este tipo de ataque funciona cuando las aplicaciones no validan correctamente las entradas antes de pasarlas a una sentencia SQL. Las inyecciones se colocan normalmente en barras de direcciones, campos de búsqueda o campos de datos.

La forma más fácil de detectar si una aplicación web es vulnerable a un ataque de inyección SQL es usar el carácter “‘” en una cadena y ver si se produce algún error.

Ejemplo 1

Tratemos de entender este concepto usando algunos ejemplos. Como se muestra en la siguiente captura de pantalla, hemos utilizado un carácter “‘‘” en el campo Nombre.

conocer inyeccion sql

Ahora, haga clic en el botón Iniciar sesión. Debería producir la siguiente respuesta:

respuesta Inyeccion sql

Significa que el campo “Nombre” es vulnerable a la inyección SQL.

Ejemplo 2

Tenemos esta URL  http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion. php

Y queremos probar la variable “page” pero observaremos cómo hemos inyectado un carácter “‘” en la URL de la cadena.

insertando caracteres en las url

Cuando se pulsa Intro, se producirá el siguiente resultado que es un error.

error datos inyeccion sql

SQLMAP

SQLMAP es una de las mejores herramientas disponibles para detectar inyecciones SQL. Se puede descargar de http://sqlmap.org/

Viene pre-compilado en la distribución de Kali. Puede localizarlo en – Aplicaciones→ base de datos de evaluación→ Sqlmap.

Después de abrir SQLMAP, pasamos a la página que tenemos la inyección SQL y obtenemos la solicitud de cabecera. Desde el encabezado, ejecutaremos el siguiente comando en SQL:

./sqlmap.py –headers=”User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0) Gecko/20100101 Firefox/25.0″ –cookie=”security=low;PHPSESSID=oikbs8qcic2omf5gnd09kihsm7″ -u ‘http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#’ -level=5 risk=3 -p id –suffix=”-BR” -v3

El SQLMAP probará todas las variables y el resultado mostrará que el parámetro “id” es vulnerable, como se muestra en la siguiente captura de pantalla.

detectando inyeccion SQL

SQLNinja

SQLNinja es otra herramienta de inyección SQL que está disponible en la distribución de Kali.

SQL Ninja

JSQL Injection

JSQL Injection está en Java y realiza inyecciones SQL automatizadas.

JSQL Injection

Consejos rápidos

Para evitar que su aplicación web sufra de ataques de inyección SQL, debe tener en cuenta los siguientes puntos:

  • No se debe permitir que la entrada de usuario no marcada en la base de datos pase a través de la interfaz gráfica de usuario de la aplicación.
  • Cada variable que pase a la aplicación debe ser desinfectada y validada.
  • La entrada del usuario que se pasa a la base de datos debe ser cotizada.

Deja un comentario

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