Tarea II periodo TICs
Profesor Cristhian Gaitán Brenes
Tema: Ataques de inyección SQL
Instrucciones.
• Proceda a investigar los ataques de inyecciones sql y responda a las interrogantes que
se les solicita.
• El trabajo puede ser individual o en parejas.
• El trabajo escrito deberá estar hecho en formato APA que incluya una portada con un
valor de 2 puntos que incluya los nombres de los integrantes, una tabla de contenidos
con un valor de 2 puntos y una biografía con un valor de 5 puntos.
• El trabajo deberá ser entregado en un periodo de tiempo de ocho días después de ser
asignado por el profesor.
• El trabajo deberá ser entregado en el espacio dentro de la plataforma Moodle asignado
por el profesor.
Proceda a investigar y responder a las siguientes interrogantes siguiendo las instrucciones
indicadas anteriormente.
¿Qué es una inyección SQL y cómo funciona? Una inyección SQL es un tipo de ciberataque en el
que un atacante inserta código SQL malicioso en una consulta a la base de datos a través de la
entrada de un usuario. Esto permite al atacante manipular la consulta y acceder a datos no
autorizados.
¿Por qué las inyecciones SQL representan una amenaza significativa para las aplicaciones web?
Las inyecciones SQL son peligrosas porque pueden permitir a los atacantes acceder, modificar o
eliminar datos sensibles, comprometer la integridad de la base de datos y obtener control
administrativo sobre los sistemas afectados.
Menciona y describe brevemente los diferentes tipos de inyecciones SQL.
Inyección SQL Clásica: Inserta código SQL directamente en la consulta.
Inyección SQL a Ciegas: No devuelve resultados visibles, pero permite inferir información a
través de respuestas booleanas.
Inyección SQL Basada en Tiempo: Utiliza retrasos en la respuesta para determinar la validez de
las consultas.
Inyección SQL de Segundo Orden: El código malicioso se almacena en la base de datos y se
ejecuta en una consulta posterior.
Explica la diferencia entre una inyección SQL clásica y una inyección SQL a ciegas. La inyección
SQL clásica devuelve resultados visibles al atacante, mientras que la inyección SQL a ciegas no
muestra resultados directos, pero permite inferir información a través de respuestas booleanas
o retrasos en el tiempo.
¿Qué es una inyección SQL basada en tiempo y en qué situaciones se utiliza? Es un tipo de
inyección SQL a ciegas que utiliza retrasos en la respuesta del servidor para determinar si una
consulta es verdadera o falsa. Se utiliza cuando no se pueden obtener resultados visibles.
Describe qué es una inyección SQL de segundo orden y cómo difiere de una inyección SQL
tradicional. En una inyección SQL de segundo orden, el código malicioso se almacena en la base
de datos y se ejecuta en una consulta posterior, a diferencia de la inyección SQL tradicional que
se ejecuta inmediatamente.
Proporciona un ejemplo de código vulnerable a una inyección SQL clásica y muestra cómo un
atacante podría explotarlo.
SQL
$query = "SELECT * FROM users WHERE username = '" . $_POST['username'] . "' AND password
= '" . $_POST['password'] . "'";
Código generado por IA. Revisar y usar cuidadosamente. Más información sobre preguntas
frecuentes.
Un atacante podría ingresar admin' -- en el campo de usuario para acceder sin contraseña:
SQL
SELECT * FROM users WHERE username = 'admin' --' AND password = ''
Código generado por IA. Revisar y usar cuidadosamente. Más información sobre preguntas
frecuentes.
Describe un escenario donde una inyección SQL podría permitir a un atacante borrar una base
de datos completa. Si un formulario de entrada no está protegido, un atacante podría enviar
una consulta como:
SQL
DROP DATABASE nombre_base_datos;
Código generado por IA. Revisar y usar cuidadosamente. Más información sobre preguntas
frecuentes.
¿Cómo puede un atacante utilizar una inyección SQL para obtener información sensible de una
base de datos? Un atacante puede modificar una consulta para extraer datos sensibles, como
contraseñas o información personal, utilizando comandos como UNION SELECT1.
¿Cuáles son las posibles consecuencias de una inyección SQL exitosa en una aplicación web?
Robo de datos sensibles.
Modificación o eliminación de datos.
Compromiso del sistema.
Pérdida de confianza de los usuarios.
Describe un caso real conocido en el que se haya utilizado una inyección SQL para comprometer
la seguridad de una empresa o sistema. Un ejemplo notable es el ataque a Sony Pictures en
2014, donde los atacantes utilizaron inyecciones SQL para acceder a datos confidenciales.
¿Qué son las consultas preparadas (prepared statements) y cómo ayudan a prevenir las
inyecciones SQL? Las consultas preparadas separan el código SQL de los datos de entrada,
evitando que el código malicioso se ejecute como parte de la consulta.
Explica la importancia de la validación y limpieza de entradas de usuario en la prevención de
inyecciones SQL. Validar y limpiar las entradas de usuario asegura que los datos ingresados no
contengan código malicioso que pueda ser ejecutado por la base de datos.
¿Cómo pueden los procedimientos almacenados contribuir a la seguridad contra inyecciones
SQL? Los procedimientos almacenados encapsulan las consultas SQL, limitando la posibilidad de
que el código malicioso se ejecute.
Describe cómo el manejo adecuado de errores puede prevenir la explotación de
vulnerabilidades de inyección SQL. Un manejo adecuado de errores evita que los mensajes de
error revelen información sobre la estructura de la base de datos.
¿Qué es un escáner de vulnerabilidades y cómo puede ayudar a detectar inyecciones SQL en una
aplicación web? Un escáner de vulnerabilidades es una herramienta que analiza aplicaciones
web en busca de posibles vulnerabilidades, incluyendo inyecciones SQL.
Describe el proceso de una prueba de penetración (penetration testing) enfocada en identificar
inyecciones SQL. Una prueba de penetración simula ataques reales para identificar y explotar
vulnerabilidades, incluyendo inyecciones SQL, y evaluar la seguridad de la aplicación.
Explica cómo las tecnologías modernas, como los ORM (Object-Relational Mapping), pueden
reducir el riesgo de inyecciones SQL. Los ORM abstraen las consultas SQL, generando código
seguro y evitando la ejecución de código malicioso.
¿Qué es el principio de “menor privilegio” en la configuración de la base de datos y cómo ayuda
a mitigar los efectos de una inyección SQL? El principio de menor privilegio limita los permisos
de los usuarios a solo lo necesario, reduciendo el impacto de una inyección SQL exitosa.
Menciona y explica al menos tres buenas prácticas de desarrollo que ayudan a prevenir
inyecciones SQL.
Uso de consultas preparadas.
Validación y limpieza de entradas de usuario.
Implementación de controles de acceso adecuados.
¿Cómo puede la utilización de frameworks de desarrollo seguros contribuir a la prevención de
inyecciones SQL? Los frameworks seguros proporcionan herramientas y prácticas
recomendadas para evitar vulnerabilidades comunes, incluyendo inyecciones SQL2.
Reflexiona sobre la evolución de los ataques de inyección SQL y cómo las técnicas de defensa
han cambiado en respuesta. Los ataques de inyección SQL han evolucionado en sofisticación,
pero las técnicas de defensa también han mejorado, incluyendo el uso de consultas preparadas,
validación de entradas y herramientas de escaneo.
Considerando las tendencias actuales en desarrollo web, ¿qué nuevos desafíos podrían surgir
en la prevención de inyecciones SQL? Con el aumento de aplicaciones web complejas y el uso
de microservicios, asegurar cada componente y punto de entrada se vuelve más desafiante.
Analiza la importancia de la educación y capacitación continua en seguridad para prevenir
vulnerabilidades como las inyecciones SQL. La educación y capacitación continua en seguridad
son esenciales para mantener a los desarrolladores actualizados sobre las mejores prácticas y
nuevas amenazas