Inyección SQL: ¿sigue siendo una amenaza? ¿Cómo puedes evitarlo?
Publicado: 2020-03-07Las violaciones de datos son tan comunes que ya ni siquiera sorprenden. Los actores maliciosos tienen como objetivo recopilar la mayor cantidad de datos posible. Buscan credenciales de inicio de sesión, información de tarjetas de crédito o secretos comerciales. Una vez que tienen en sus manos esos datos, los venden en la dark web.
Si no puede comprender la cantidad de datos que robaron hasta ahora y la cantidad que arrojaron en la web oscura, aquí hay un número preocupante. El año pasado, los delincuentes robaron y vendieron 620 millones de cuentas solo de dieciséis sitios web pirateados. Sí, piratear dieciséis sitios web puede causar mucho daño. ¿Pero sabes qué es peor? ¡Miles de sitios nuevos son pirateados todos los días!
Los ciberdelincuentes inventan nuevos métodos de piratería todos los días. Pero eso no significa que olviden técnicas más antiguas, como las inyecciones de SQL. Todavía son uno de los vectores de ataque más comunes que son simples de ejecutar y producen resultados fructíferos.
- ¿Qué es la inyección SQL y por qué es peligrosa?
- ¿Cómo funciona la inyección SQL?
- Inyección SQL en banda
- Inyección ciega de SQL
- Inyección SQL fuera de banda
- ¿Sigue siendo relevante esta amenaza?
- Consejos de seguridad para la prevención
- Ultimas palabras
¿Qué es la inyección SQL y por qué es peligrosa?
La inyección SQL, también conocida como SQLi, es una forma de ataque de inyección que permite al hacker ejecutar una declaración SQL. Los ataques de inyección son una amplia categoría de diferentes vectores de ataque. Pero todos permiten que los actores maliciosos realicen entradas peligrosas. Actúan como un comando del sistema, que luego se ejecuta.
Las sentencias SQL se usan más comúnmente para agregar o recuperar datos de varias bases de datos. Muchos sistemas de gestión famosos, como Microsoft SQL Server, Access y Oracle, utilizan estas declaraciones.
Dado que muchos sistemas de administración de bases de datos ampliamente utilizados utilizan declaraciones SQL, los piratas informáticos pueden explotar estos sistemas mediante inyecciones de SQL. Significa que los delincuentes pueden acceder y robar datos confidenciales almacenados en la base de datos. Puede incluir lo siguiente:
- propiedad intelectual.
- Información de tarjeta de crédito.
- Información al cliente.
- direcciones.
- secretos de empresa.
Recomendado para usted: Chrome vs Firefox: ¡La comparación de rendimiento, seguridad y privacidad!
¿Cómo funciona la inyección SQL?
Para ejecutar un ataque de inyección SQL, el pirata informático debe ubicar las entradas de los usuarios vulnerables dentro del sitio web o las aplicaciones internas de la empresa.
Por ejemplo, la víctima usa WordPress para su sitio web. El código puede tener una vulnerabilidad de SQL que envía la entrada del usuario directamente a la base de datos sin ningún tipo de saneamiento. Si un pirata informático localiza esa vulnerabilidad, puede enviar comandos a la base de datos en cuestión. Luego, la salida de la base de datos vuelve al navegador y permite al pirata informático ejecutar diferentes comandos. De esta forma, pueden descargar toda la base de datos, configurar nuevos comandos, modificar cuentas de usuario o crear nuevas cuentas.
Hay tres formas principales de ataques de inyección SQL:
- Inyección de SQL en banda:
- Inyección SQL basada en errores.
- Inyección SQL basada en unión.
- Inyección ciega de SQL:
- booleano.
- Basado en el tiempo.
- Inyección SQL fuera de banda.
Inyección SQL en banda
La inyección de SQL en banda es uno de los tipos más comunes porque es simple y eficiente. Aquí, el atacante utiliza el mismo canal de comunicación para ejecutar el ataque y recopilar resultados. Tiene dos subvariaciones: inyección de SQL basada en errores y basada en unión:
- La inyección de SQL basada en errores permite al pirata informático hacer que la base de datos produzca mensajes de error. Luego, pueden usar estos mensajes de error para recopilar información sobre la propia base de datos.
- La inyección de SQL basada en unión permite al culpable aprovechar el operador UNION SQL. Combina diferentes declaraciones proporcionadas por la base de datos para obtener una respuesta HTTP. Tal respuesta a menudo contiene datos que los piratas informáticos pueden explotar.
Inyección ciega de SQL
Las inyecciones ciegas de SQL se basan en los patrones de comportamiento del servidor. Son mucho más lentos de ejecutar. El hacker emite payloads de datos e inspecciona la respuesta del servidor para analizar su estructura. Llaman a esto "ciego" porque los datos no van directamente a los piratas informáticos. Por lo tanto, no pueden ver ninguna información sobre el exploit en banda. Viene en dos variaciones, a saber, booleana y basada en el tiempo:
- La variación booleana permite al pirata informático enviar una consulta SQL, lo que solicita a la base de datos que devuelva información. La información dentro de la respuesta HTTP cambia según el resultado anterior.
- La variación basada en el tiempo permite que el actor malintencionado envíe una consulta SQL directamente a la base de datos, lo que obliga a la base de datos a esperar antes de poder reaccionar. El atacante toma nota del tiempo necesario para que la base de datos responda y decide si la consulta es verdadera o falsa. Según el resultado, la respuesta HTTP es instantánea o retrasada.
Inyección SQL fuera de banda
La inyección de SQL fuera de banda permite que el hacker ataque la base de datos solo si las características específicas están habilitadas en el servidor de la base de datos. Es el método de inyección SQL menos popular. Muchos piratas informáticos lo utilizan como reemplazo de las inyecciones SQL ciegas y basadas en errores.

Este ataque en particular es una opción cuando el pirata informático no puede usar el mismo medio para ejecutar el ataque y recopilar información. O bien, pueden usar esta inyección cuando un servidor es inestable y lento para realizar los otros dos tipos de inyección. Esta técnica crea solicitudes DNS y HTTP para reenviar los datos robados.
Te puede interesar: Consejos de gestión y evaluación de riesgos de ciberseguridad para pequeñas empresas.
¿Sigue siendo relevante esta amenaza?
Las inyecciones SQL son una de las formas más antiguas de ciberataques agresivos. Sin embargo, sigue siendo muy relevante. El Proyecto de Seguridad de Aplicaciones Web Abiertas enumeró las inyecciones de SQL como la amenaza número uno hace dos años. El proveedor de servicios en la nube Akamai ha creado un Informe sobre el estado de Internet, que encontró que las inyecciones de SQL fueron responsables del 65 % de todos los ataques basados en la web entre 2017 y 2019. Por lo tanto, puede decir que la inyección de SQL todavía aparece en dos tercios de los ataques web. en años recientes.
En el primer trimestre de 2017, estos vectores fueron responsables del 44 % de los ataques a la capa de aplicación. Para empeorar las cosas, ninguna otra forma de vector de ataque de aplicaciones crece tan rápido como las inyecciones de SQL. En noviembre de 2018, hubo otro aumento significativo. Ha demostrado que hubo más de 35 millones de intentos de ataque de inyección SQL. Los expertos creen que la principal causa de este pico fue la temporada navideña. Es algo que todos los propietarios de sitios web deben tener en cuenta, especialmente si están en la industria minorista. Pero incluso después de que termine la temporada navideña, la inyección SQL sigue siendo una amenaza que debe tener en cuenta.
Estados Unidos es el principal objetivo de los ataques en la capa de aplicación. Ha enfrentado alrededor de 3 mil millones de ataques en solo 17 meses. Otras víctimas populares incluyen el Reino Unido, Alemania, Brasil, India, Japón, Canadá, Australia, Italia y los Países Bajos. Por lo tanto, es seguro asumir que sigue siendo una gran amenaza y que todas las empresas deberían tomar amplias medidas de precaución.
Consejos de seguridad para la prevención
El mejor curso de acción para los desarrolladores es introducir medidas de precaución para evitar que ocurran los ataques. Estas son las medidas de prevención más efectivas:
- Validación de entrada: la validación de entrada verifica si una entrada de usuario en particular está permitida o no. Eso significa que el formato, la longitud y el tipo deben aceptarse colectivamente. Es útil para combatir los comandos que plantan los piratas informáticos en la cadena de entrada.
- Consultas parametrizadas: Las consultas parametrizadas son una forma de compilar previamente diferentes sentencias SQL. Luego almacena los parámetros para que la declaración pueda ejecutarse. Permite que la base de datos reconozca el código y lo diferencie de los datos de entrada habituales.
- Procedimientos almacenados: necesitan que los desarrolladores agrupen una o varias sentencias SQL en una unidad lógica. Es una forma de código que uno puede almacenar, como sugiere el nombre, y guardar para más adelante.
- Escape: los desarrolladores deben usar funciones de escape de caracteres para asegurarse de que el DBMS no confunda la entrada del usuario con una instrucción SQL.
- Firewall de aplicaciones web: es uno de los métodos más seguros para prevenir ataques de inyección SQL. El cortafuegos supervisa el tráfico que circula hacia y desde el servidor. Identifica qué solicitudes son potencialmente dañinas y cuáles no. Esta solución es suficiente para muchas otras hazañas, por lo que siempre es decente.
- Evitar los privilegios administrativos: los desarrolladores nunca deben conectar sus aplicaciones a la base de datos a través de cuentas con acceso raíz. De lo contrario, los piratas informáticos podrían acceder a todo el sistema y causar daños irreparables. Además, los desarrolladores deben asegurarse de que cada base de datos tenga su propio conjunto de credenciales con limitaciones.
También te puede interesar: Los 10 mejores programas de seguridad de Internet más vendidos (antivirus y seguridad).
Ultimas palabras
Cualquiera que esté preocupado por la inyección SQL tampoco debe olvidar otros posibles ataques. Se aplican las prácticas habituales de ciberseguridad: use contraseñas sólidas, aprenda a reconocer amenazas, active una VPN cada vez que se conecte a sitios web o bases de datos, etc. ¿Qué es una VPN y qué hace? Cifra su tráfico en línea cada vez que se conecta. Entonces, si envía una solicitud SQL a su base de datos, solo la base de datos puede descifrarla. Si alguien intercepta los paquetes de datos en cuestión, no les dará ningún sentido. Cuanto más preparado esté usted o su empresa para todo tipo de amenazas, mejor.
Solo la introducción de medidas preventivas integrales garantiza que la inyección SQL o los ataques nunca tengan éxito. Esté preparado para invertir mucho tiempo, esfuerzo y dinero para asegurarse de que tiene las herramientas adecuadas para luchar contra varios exploits.