Prueba de vulnerabilidades de inyección SQL

Los ataques de inyección SQL presentan riesgos tremendos para las aplicaciones web que dependen del backend de una base de datos para generar contenido dinámico. En este tipo de ataque, los piratas informáticos manipulan una aplicación web en un intento de inyectar sus propios comandos SQL en los emitidos por la base de datos.

Los ataques de inyección SQL presentan riesgos tremendos para las aplicaciones web que dependen del backend de una base de datos para generar contenido dinámico. En este tipo de ataque, los piratas informáticos manipulan una aplicación web en un intento de inyectar sus propios comandos SQL en los emitidos por la base de datos. En este artículo, analizamos varias formas en que puede probar sus aplicaciones web para determinar si son vulnerables a los ataques de inyección SQL.

Escaneo automatizado de inyección SQL

Una posibilidad es usar un escáner de vulnerabilidades de aplicaciones web automatizado, como WebInspect de HP, AppScan de IBM o Hailstorm de Cenzic. Todas estas herramientas ofrecen formas fáciles y automatizadas de analizar sus aplicaciones web para detectar posibles vulnerabilidades de inyección SQL. Sin embargo, son bastante caros y cuestan hasta $ 25,000 por asiento.

Pruebas manuales de inyección SQL

¿Qué debe hacer un desarrollador de aplicaciones deficiente? En realidad, puede ejecutar algunas pruebas básicas para evaluar sus aplicaciones web para detectar vulnerabilidades de inyección SQL utilizando nada más que un navegador web. Primero, una advertencia: las pruebas que describimos solo buscan fallas básicas de inyección SQL. No detectarán técnicas avanzadas y son algo tediosos de usar. Si puede pagarlo, vaya con un escáner automático. Sin embargo, si no puede manejar ese precio, las pruebas manuales son un gran primer paso.
La forma más fácil de evaluar si una aplicación es vulnerable es experimentar con ataques de inyección inocuos que realmente no dañarán su base de datos si tienen éxito pero le proporcionarán evidencia de que necesita corregir un problema. Por ejemplo, suponga que tiene una aplicación web simple que busca a un individuo en una base de datos y proporciona información de contacto como resultado. Esa página podría usar el siguiente formato de URL:

Podemos suponer que esta página realiza una búsqueda en la base de datos, utilizando una consulta similar a la siguiente:

Experimentemos con esto un poco. Con nuestra suposición anterior, podemos hacer un cambio simple en la URL que prueba los ataques de inyección SQL:

Si la aplicación web no se ha protegido adecuadamente contra la inyección de SQL, simplemente conecta este nombre falso en la instrucción SQL que ejecuta en la base de datos, lo que resulta en:

Notarás que la sintaxis anterior es un poco diferente a la de la URL original. Nos tomamos la libertad de convertir la variable codificada en URL para sus equivalentes ASCII para que sea más fácil seguir el ejemplo. Por ejemplo,% 3d es la codificación de URL para el carácter ‘=’. También agregamos algunos saltos de línea para propósitos similares.

Evaluando los resultados

La prueba se produce cuando intenta cargar la página web con la URL mencionada anteriormente. Si la aplicación web se comporta bien, eliminará las comillas simples de la entrada antes de pasar la consulta a la base de datos. Esto simplemente resultará en una búsqueda extraña para alguien con un nombre que incluya un montón de SQL. Verá un mensaje de error de la aplicación similar al siguiente:

Por otro lado, si la aplicación es vulnerable a la inyección de SQL, pasará la declaración directamente a la base de datos, lo que dará como resultado una de dos posibilidades. Primero, si su servidor tiene habilitados mensajes de error detallados (que no debería), verá algo como esto:

Por otro lado, si su servidor web no muestra mensajes de error detallados, obtendrá un error más genérico, como:

Si recibe uno de los dos errores anteriores, su aplicación es vulnerable al ataque de inyección SQL. Algunos pasos que puede seguir para proteger sus aplicaciones contra los ataques de inyección SQL incluyen:

  • Implemente la verificación de parámetros en todas las aplicaciones. Por ejemplo, si le está pidiendo a alguien que ingrese un número de cliente, asegúrese de que la entrada sea numérica antes de ejecutar la consulta.
  • Limite los permisos de la cuenta que ejecuta consultas SQL. Se aplica la regla del menor privilegio. Si la cuenta utilizada para ejecutar la consulta no tiene permiso para ejecutarla, no tendrá éxito.
  • Use procedimientos almacenados (o técnicas similares) para evitar que los usuarios interactúen directamente con el código SQL.
Rate article
labsfabs.com
Add a comment