¿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 semanaEs 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!