¿Qué tipos de inyección SQL existen, en qué se diferencian y cómo se pueden utilizar?
En seguridad informática, el hacking web se utiliza para poner a prueba y encontrar las vulnerabilidades presentes en las aplicaciones web. Dado que, actualmente, la mayoría de compañías requieren estas tecnologías, el pentesting web es uno de los servicios más demandados de la ciberseguridad.
Para hacer tests de intrusión en sitios web, es necesario familiarizarse con el tipo de tecnología que utilizan. Sin embargo, no hace falta convertirse en un desarrollador experto (a pesar de que sería de gran utilidad). No obstante, en ciberseguridad, basta con entender lo suficiente como para encontrar los principales fallos que ponen en riesgo a las aplicaciones.
Una guía útil para aprender a hacer un test de penetración web es la lista de OWASP Top 10, que contiene los ciberataques más usados contra las aplicaciones actualmente. En este post, por ejemplo, hablaremos de un tipo de ataque que se ubica en la tercera posición de este ranking: la inyección de código SQL.
La inyección SQL es un ciberataque web que permite ejecutar comandos en lenguaje SQL, que sirve para extraer, modificar, añadir y eliminar información de una base de datos. A continuación, te explicaremos cuáles son los diferentes tipos de inyección SQL y cuál es el principal método para identificarlos.
Tipos de inyección SQL
Las inyecciones SQL se producen por una falta de validación de los inputs de los clientes de una página web. Este fallo de seguridad significa que un usuario puede concatenar comandos en lenguaje SQL, dentro de una consulta en la aplicación y, de este modo, ejecutar código dentro de la página. Ahora bien, existen tres tipos de inyección SQL:
- Inyección SQL In-Band: permite obtener información de la base de datos de la aplicación web, por medio de mismo canal que se utiliza para explotarla. Es decir, muestra los resultados de la consulta (maliciosa) en la pantalla del sitio web, si ejecutamos el payload desde allí en algún input. Es uno de los tipos de inyecciones más comunes.
- Inyección SQL basado en error: permite extraer información de la base de datos, por medio de errores inducidos a propósito por un cliente. En ocasiones, estos errores revelan información de la página.
- Inyección SQL a ciegas: permite conocer información de la base de datos, sin ver ningún resultado de la consulta impreso en la pantalla del sitio web. Los resultados se infieren a partir de pruebas de verdadero o falso, que se pueden ejecutar desde los campo de consulta vulnerables.
¿Cómo identificarlos?
🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaYa hemos visto los tres principales tipos de inyección SQL. Ahora, te preguntarás cómo es posible identificar cada uno de ellos.
El tipo de inyección SQL apropiado para cada aplicación web depende de la vulnerabilidad que se halle presente. Por eso, es útil recurrir a una herramienta que busque fallos de manera automática. El software por excelencia para hacer este estudio es SQLmap.
SQLmap es un programa de código abierto que viene instalado en Kali Linux y permite hacer miles de pruebas con el fin de encontrar fallos de inyección SQL en aplicaciones web. Adicionalmente, SQLmap provee los diferentes payloads que se pueden ejecutar para explotar las consultas vulnerables. De este modo, es una herramienta que hace la mayor parte del trabajo técnico por el pentester, que solo debe preocuparse por examinar la aplicación y aprender a usar este software.
Gracias a SQLmap, no es necesario tener conocimientos muy amplios de SQL para hacer un ataque de SQL injection fácil o intermedio en un test de penetración. Ahora bien, aprender más sobre este lenguaje es útil para entender y prevenir ataques más avanzados.
Métodos manuales simples
Si, durante un test de penetración, estás navegando de forma manual y deseas probar si puedes hacer alguno de los tipos de inyección SQL que mencionamos anteriormente, hay algunos métodos simples para hacerlo.
El primer test consiste en enviar una comilla simple como input, es decir:
//Tipos de inyección SQL '
Si la entrada es vulnerable, se producirá un error en la aplicación.
El siguiente test consiste en enviar el siguiente valor:
//tipo de inyección SQL 1' and '1'='1
Si el input se ejecuta con normalidad, quiere decir que se está inyectando código SQL, ya que el parámetro ‘1’=’1′ es verdadero y se cumple siempre.
Para corroborar, envía el comando:
//Tipos de inyección SQL 1' and '1'='0
Si el input NO se ejecuta, habremos confirmado que se puede inyectar código SQL en la entrada, ya que el parámetro ‘1’=’0′ es falso y, por eso, el input no se habría ejecutado.
Ahora sabes cuáles son los diferentes tipos de inyección SQL. Si quieres aprender más sobre técnicas y herramientas de hacking web, te ofrecemos la formación intensiva perfecta gracias a nuestro Bootcamp en Ciberseguridad. ¿Quieres especializarte en solo 7 meses? ¡Apúntate y cambia tu vida ahora!