Vulnerabilidades de inyección SQL

Contenido del Bootcamp Dirigido por: | Última modificación: 18 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes qué son las vulnerabilidades de inyección SQL y cómo pueden ser identificadas en una aplicación web?

El pentesting de aplicaciones web consiste en poner a prueba la seguridad de todas sus páginas por medio de las mismas técnicas que usaría un hacker malicioso para vulnerarlas. Cabe aclarar que, en el pentesting, este proceso se realiza de forma autorizada y con el fin de reportar los fallos de seguridad encontrado. Para aprender a ejecutar un pentest web, es necesario conocer las principales vulnerabilidades que pueden ser halladas en aplicaciones.

Una buena guía para realizar una auditoría de ciberseguridad en páginas web es la lista de OWASP Top 10, que contiene los diez ataques más comunes a aplicaciones web. Entre ellas, el puesto número tres lo tienen los ataques de inyección de código y, por eso, hablaremos sobre ellos en esta publicación.

En este post, explicaremos los fallos de seguridad que permiten inyectar código en el backend de una aplicación desde alguna entrada controlada por el usuario. En particular, veremos fallos relacionados con bases de datos y el lenguaje de programación SQL. A continuación, te explicaremos qué son las vulnerabilidades de inyección SQL y cómo identificarlas tú mismo.

Vulnerabilidades de inyección SQL

Las vulnerabilidades de inyección SQL son fallos de seguridad que permiten ejecutar comandos en lenguaje SQL para interactuar con la base de datos de un sitio web. La mayoría de aplicaciones web cuentan con bases de datos en su backend para organizar los diferentes elementos que la componen, como:

  • Nombres de usuarios.
  • Contraseñas.
  • Precios.
  • Productos.

Estos, entre muchos otros valores, pueden componer bases de datos y, mediante una inyección SQL, estos pueden ser leídos, modificados, añadidos o eliminados por un atacante.

¿Cómo encontrar vulnerabilidades de inyección SQL?

🔴 ¿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 semana

Antes de enseñarte a hallar vulnerabilidades de inyección SQL, es necesario aclarar que el pentesting debe hacerse con autorización del propietario del sitio web. Por eso, asegúrate de solamente hacer este tipo de pruebas en entornos legales.

Lo primero que debes hacer para encontrar una vulnerabilidad SQL es verificar qué tipo de tecnología utiliza la página del sitio web. De este modo, sabrás si cuenta con bases de datos que utilicen el lenguaje de programación SQL. Algunas de ellas son Oracle, MySQL o SQL Server. Para obtener información sobre la tecnología de una página web, puedes usar una extensión de navegador, como Wappalyzer, o algún programa, como WhatWeb.

Una vez verifiques que la página utiliza estas bases de datos, es necesario encontrar un input del usuario que le haga consultas a la base de datos. Cuando la identifiques, podrás comenzar a hacer pruebas de inyección de código SQL.

¿Cómo saber si estoy inyectando código SQL?

Para saber si estás inyectando código SQL en una entrada, comienza por introducir una comilla sencilla, es decir, el carácter:

'

Pero, ¿ como saber si una pagina es vulnerable a sql injection ?

Si se produce en error en la página (es decir, por ejemplo, que no cargue), es altamente probable que podamos inyectar código. La siguiente prueba tendrá la siguiente sintaxis:

// ejemplo de inyeccion sql
1' and '1'='1

Si la entrada se ejecuta con normalidad, quiere decir que estamos ejecutando código, ya que el parámetro SQL que estamos ingresando es verdadero. Ahora, probaremos la siguiente entrada:

// ataque inyeccion sql
1' and '1'='0

Si la entrada NO se ejecuta, confirmaremos que estamos inyectando código, ya que el parámetro que hemos ingresado es falso.

Qué es SQLmap

Ya hemos visto qué son las vulnerabilidades de inyección SQL y cómo saber si existe alguna de forma manual. Sin embargo, es importante recordar que existe una herramienta muy poderosa que permite hacer indagaciones avanzadas de forma automática.

SQLmap es un programa que permite identificar y explotar vulnerabilidades de inyección SQL. Este software, que es de código abierto y viene preinstalado en Kali Linux, ejecuta miles de pruebas, como las que describimos en la sección anterior, para hallar fallos de manera automática.

SQLmap permite encontrar vulnerabilidades SQL y, asimismo, provee los payloads indicados para explotarlas. Gracias a esta herramienta, los auditores de seguridad no necesitan aprender tanto lenguaje SQL para poder ejecutar inyecciones sencillas e intermedias.

¿Cómo aprender más?

Ya hemos visto qué son las vulnerabilidades de inyección SQL y varios métodos para identificarlas. Si quieres aprender más sobre técnicas y herramientas de hacking web, en KeepCoding tenemos el curso ideal para ti.

En nuestro Ciberseguridad Full Stack Bootcamp, tendrás clases en vivo con los mejores expertos sobre temas como recopilación de información, red team/blue team, criptografía, análisis de malware, seguridad forense y mucho más. ¡Inscríbete ahora y especialízate en solo 7 meses!

Carlos Cilleruelo

CEO and co-founder of Byron Labs & Coordinador del Bootcamp en Ciberseguridad.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado