Page 1 - Ataques de SQL Injection
P. 1
Laboratorio de Ciberseguridad
Ataques de SQL Injection
Dr. Miguel A. Rojas – mrojas@ude.edu.uy
A/S Diego Nogueira – dnogueira@ude.edu.uy
Los principios de desarrollo de software recuperar el contenido de un archivo
seguro junto con las metodologías de determinado presente en el sistema de
desarrollo seguro en el ciclo de vida del archivos del DBMS y en algunos casos
software, en ingles Secure-Software emitir comandos al sistema operativo.”.
Development Life Cycle (S-SDLC), (OWASP, 2024)
tienen como objetivo brindar un Un tipo de ataque de inyección SQL
conjunto de técnicas y mejores prácticas (pero no el único) ocurre cuando: Un
que deben ser incluidas en las etapas dato no deseado ingresa a un programa
tempranas del ciclo de vida de desarrollo desde una fuente no confiable o los datos
de software con la finalidad de disminuir se utilizan para construir dinámicamente
las vulnerabilidades del software y en una consulta SQL.
definitiva crear software potencialmente
más seguro. A modo de ejemplo, Supongamos que
tenemos una aplicación web con un
Hoy desarrollaremos una vulnerabilidad formulario de inicio de sesión que solicita
conocida como SQL Injection o un nombre de usuario y una contraseña.
Inyección SQL (SQLi). Kaspersky Labs El código en el cliente podría estar
lo define como: “Una inyección de SQL, construido de la siguiente manera:
a veces abreviada como SQLi, es un tipo
de vulnerabilidad en la que un atacante
usa un trozo de código SQL (lenguaje de <form action="login.php" method="post">
consulta estructurado) para manipular Usuario: <input type="text" id="usuario"
una base de datos y acceder a información name="usuario" required>
potencialmente valiosa.” (kaspersky, <br>
2024) Contraseña: <input type="password"
id="pass" name="pass" required>
La inyección SQL representa una de las <br>
amenazas más significativas para la <button type="submit">Login</button>
seguridad de las aplicaciones web que </form>
interactúan con bases de datos. Este
documento explora la naturaleza de los
ataques de inyección SQL, sus potenciales Ahora, del lado del servidor, en PHP, se
impactos en los sistemas de información, vería así:
y las estrategias recomendadas para $user = $_POST[usuario];
prevenir y mitigar estos ataques. $pass = $_POST['pass];
$stmt = $conn->prepare("SELECT * FROM usuarios
“Un ataque de inyección SQL consiste en WHERE usuario = :usuario AND pass = :pass");
la inserción o ´inyección´ de una consulta $stmt->execute();
SQL a través de los datos de entrada del
cliente a la aplicación. Un exploit de Si el usuario introduce admin como
inyección SQL exitoso puede leer datos usuario y pass123 como contraseña, la
confidenciales de la base de datos, consulta SQL generada dinámicamente se
modificar datos de la base de datos vería así: SELECT * FROM usuarios
(Insertar/Actualizar/Eliminar), ejecutar WHERE usuario = 'admin' AND pass =
operaciones de administración en la base 'pass123';
de datos (como apagar el DBMS),