Bases de SQL para ciberseguridad

| Última modificación: 7 de junio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Cuáles son las bases de SQL para ciberseguridad, que todos los pentesters necesitan aprender?

La inyección SQL es un tipo de ciberataque para aplicaciones web que permite ejecutar comandos en lenguaje SQL en una base de datos, para extraer, modificar, añadir o eliminar información de la misma. Por medio de este tipo de ataque, se puede robar información confidencial o, incluso, tomar control total de un servidor.

En este post, veremos algunas nociones básicas de SQL, enfocadas en hacer auditorías de ciberseguridad. Para realizar tests de pentetración, no es necesario especializarse en lenguaje SQL, ya que hay herramientas que identifican y explotan fallos de manera automática. No obstante, a continuación veremos algunos conceptos fundamentales para entender la lógica detrás de estos ataques.

Bases de SQL para ciberseguridad

Como lo adelantamos en la introducción, no hay que ser un experto en lenguaje SQL para poder hacer ataques fáciles e intermedios de inyección SQL. De hecho, existen herramientas, como SQLmap, que permiten automatizar en gran medida estos ataques. Sin embargo, para entender cómo funcionan, es bueno conocer algunas bases de SQL para ciberseguridad.

Consultas básicas

Para entender las bases de SQL para ciberseguridad, comenzaremos por la estructura de una consulta.

Una consulta básica en lenguaje SQL tiene la siguiente sintaxis:

SELECT <columnas>, FROM <tabla> WHERE <condición>;

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

Es decir, una consulta diligenciada se vería así:

SELECT Name, Description FROM Products WHERE ID='3'

Con este código, le estaríamos diciendo a la base de datos que nos muestre el artículo con el ID = 3, de la columna “Name”, de la tabla “Products”.

De este modo, es posible seleccionar algún valor de una tabla.

Comando UNION

Las vulnerabilidades SQL nos permiten concatenar código malintencionado en una consulta. Uno de los comandos de SQL que se utiliza comúnmente en los payloads es “UNION“. El comando “UNION” sirve, precisamente, para concatenar una consulta con otra. La sintaxis para utilizarlo es la siguiente:

<SELECT statement> UNION <other SELECT statement>

Por ejemplo, podría verse del siguiente modo:

SELECT Name, Description FROM Products WHERE ID='3' UNION SELECT Username, Password FROM Accounts;

Como podrás notar, el payload del ejemplo es una orden para que la base de datos nos muestre los valores de nombres de usuarios y contraseñas de la tabla “Accounts”.

Consultas vulnerables

Una consulta vulnerable se puede encontrar en cualquier parte de la aplicación y solo uno de estos fallos bastará para hacer un ataque. Por eso, dentro de las bases de SQL para ciberseguridad, es necesario aprender a identificar estos puntos débiles de una app.

Para verificar si una consulta es vulnerable a inyección de código SQL, puedes empezar por enviar una comilla sencilla, es decir:

'

Si se produce un error en la página, como, por ejemplo, que no vuelva a cargar, es altamente probable que la consulta sea vulnerable a inyección de código. El siguiente test que puedes usar es:

1' and '1'='1

Si la aplicación lee el input con normalidad, es vulnerable a inyección de código, porque el parámetro “and ‘1’=’1′” es cierto y quiere decir que la base de datos lo está interpretando.

OR payload

Para detectar vulnerabilidades SQL y explotarlas de forma automática, existen herramientas como SQLmap. Sin embargo, veremos un payload muy sencillo que puede ser ejecutado de forma manual en una consulta SQL vulnerable a inyección.

Si una consulta es vulnerable, puedes enviarle el siguiente input:

' or 'a'='a

En el backend, la consulta se vería de la siguiente forma:

SELECT Name, Description FROM Products WHERE ID='' OR 'a'='a'

Como la condición a=a siempre se cumple, el resultado de esta inyección SQL será que la base de datos nos mostrará todos los productos de la tabla en pantalla.

Ahora ya conoces cuáles son las bases de SQL para ciberseguridad. Si quieres aprender más sobre técnicas de hacking web, en KeepCoding tenemos el mejor curso para ti. Ingresa a nuestro Ciberseguridad Full Stack Bootcamp y especialízate en tan solo 7 meses. ¿A qué estás esperando? ¡Inscríbete ya e impulsa tu carrera!

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