REPÚBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA
UNIVERSIDAD POLITÉCNICA TERRITORIAL DE LOS LLANOS “JUANA
RAMIREZ”
PROGRAMA NACIONAL DE FORMACIÓN EN INFORMÁTICA
VALLE DE LA PASCUA – ESTADO GUÁRICO
Profesor:
Participante:
Ing. Alfredo Sánchez
Domingo Taldone
C.I:19.067.072
Abril, 2023
¿Qué es la inyección de SQL?
Los ataques de inyección de SQL son una de las vulnerabilidades de las
aplicaciones web más antiguas, ya que se analizan desde fines de 1990, pero
siguen siendo relevantes en la actualidad. En esta explicación, se describe qué
son, cómo funcionan y cómo se pueden prevenir.
Una inyección de SQL, a veces abreviada como SQLi, es un tipo de
vulnerabilidad en la que un atacante usa un trozo de código SQL (lenguaje de
consulta estructurado) para manipular una base de datos y acceder a información
potencialmente valiosa. Es uno de los tipos de ataques más frecuentes y
amenazadores, ya que puede atacar prácticamente cualquier sitio o aplicación
web que use una base de datos basada en SQL (la mayoría).
Tipos de inyección de SQL
Según la forma de acceso a los datos de backend y la extensión del posible
daño provocado, las inyecciones de SQL se pueden dividir en las siguientes tres
categorías:
SQLi en banda:
Este tipo de ataque SQLi es sencillo para los atacantes, porque usan el
mismo canal de comunicación para lanzar ataques y obtener resultados. Este tipo
de ataque SQLi tiene dos su variantes:
SQLi basado en errores: la base de datos genera un mensaje de error por
las acciones del atacante. El atacante obtiene información sobre la infraestructura
de la base de datos en función de los datos que generaron estos mensajes de
error.
SQLi basado en unión: el atacante usa el operador UNION SQL para
obtener los datos deseados mediante la fusión de varias declaraciones Select en
una única respuesta HTTP.
SQLi Inferencial (también conocida como inyección de SQL ciega):
En este tipo de SQLi, los atacantes usan patrones de respuesta y
comportamiento del servidor después de enviar cargas útiles de datos para
obtener más información sobre su estructura. Los datos no se transfieren de la
base de datos del sitio web al atacante, así que el atacante no ve la información
sobre el ataque en banda (por eso se usa el término “SQLi ciega”). La SQLi
inferencial se puede clasificar en dos subtipos:
SQLi basado en el tiempo: los atacantes envían una consulta de SQL a la
base de datos, esto hace que la base de datos espere unos segundos antes de
responder si la consulta es verdadera o falsa.
SQLi booleana: los atacantes envían una consulta de SQL a la base de
datos, así permiten que la aplicación responda mediante la generación de un
resultado verdadero o falso.
SQLI FUERA DE BANDA:
Este tipo de ataque de SQL se puede llevar a cabo en las siguientes dos
situaciones:
Cuando los atacantes no pueden usar el mismo canal para lanzar el ataque
y compartir información; o cuando un servidor es demasiado lento o inestable para
realizar estas acciones.
TÉCNICAS PARA EVITAR LA INYECCIÓN SQL
Para las empresas interesadas en la prevención de la inyección de SQL, los
principios clave para ayudar a proteger los sitios y las aplicaciones web son los
siguientes:
Capacitar al personal: Concientizar al equipo responsable de la aplicación
web sobre los riesgos relacionados con la SQLi y brindar la capacitación necesaria
para todos los usuarios en función del puesto.
Mantener el control de la entrada de los usuarios: Cualquier entrada de
usuario utilizada en una consulta de SQL genera un riesgo. Aborda las entradas
de los usuarios autenticados o internos de la misma manera que las entradas
públicas hasta que se verifiquen. Otórgales a las cuentas que se conectan a la
base de datos SQL solo los privilegios mínimos necesarios. Utilice listas blancas
como práctica estándar en lugar de listas negras para verificar y filtre la entrada de
los usuarios.
Utilizar las versiones más recientes: Es importante usar la versión más
reciente del entorno de desarrollo para maximizar la protección, ya que es posible
que a las versiones anteriores les falten funciones de seguridad. Asegúrese de
instalar el software y los parches de seguridad más recientes cuando estén
disponibles.
ANALIZAR DE FORMA CONTINUA LAS APLICACIONES WEB:
Use herramientas integrales de administración del rendimiento de las
aplicaciones. Analizar regularmente las aplicaciones web permite identificar y
abordar posibles vulnerabilidades antes de que provoquen daños graves.
Usar un firewall: El firewall de una aplicación web (WAF) a menudo se usa
para filtrar SQLi, así como otras amenazas en línea. Un WAF confía utiliza una
extensa lista de firmas que se actualiza con frecuencia y le permite filtrar consultas
de SQL maliciosas. Por lo general, la lista tiene firmas para abordar vectores de
ataque específicos y se corrige con regularidad en respuesta a vulnerabilidades
recientemente descubiertas.
Ya hemos visto en qué consiste este dañino ciberataque de inyección SQL,
que solía ocupar el primer puesto en el ranking de OWASP Top 10, en el año
2017. Ahora, veremos cómo prevenir la inyección SQL o evitar SQL inyección en
una base de datos.
La primera medida, esencial para evitar este ataque, es limitar los premisos
de lectura/escritura del usuario. La aplicación debe estar configurada de tal forma
que los usuarios no cuenten con más privilegios de los que son estrictamente
necesarios. Cabe recordar que los ataques de inyección SQL no son el único
ciberataque que amenaza a una página de inicio de sesión.
No obstante, esta configuración por sí sola no es suficiente para evitar un
ciberataque de SQL inyección. Para ello de evitar SQL inyección, se ha
desarrollado una medida actualizada y muy efectiva en la defensa de este ataque.
EJEMPLOS DE INYECCIÓN SQL EN EL MUNDO REAL
Durante las últimas dos décadas, un gran número de ataques de inyección
SQL han sido dirigidos hacia grandes páginas web, empresas y plataformas de
redes sociales. Algunos de estos ataques han resultado en grandes filtraciones de
datos. Algunos de los ejemplos más notorios incluyen los siguientes:
En 2008, dos hackers nacidos en Rusia usaron técnicas de inyección SQL para
atacar Heartland Payment Systems, un proveedor entonces exitoso de soluciones
de tramitación de pagos. Clasificada como la filtración de datos de tarjetas de
crédito más grande hasta el momento, el ataque dio a los hackers acceso a la
información de más de 150 millones de tarjetas de crédito y costó a la empresa
afectada más de 300 millones de dólares. En 2018, los hackers fueron
condenados a una sentencia conjunta de más de 16 años.
En 2016, un grupo de hackers explotó las vulnerabilidades de vBulletin, un popular
software de tablón de mensajería online, para atacar a 11 tableros de mensajes
dedicados a los juegos, la mayoría de ellos en ruso. Durante el ataque, los
hackers consiguieron robar datos de registro de más de 27 millones de cuentas.
También en 2016, los hacker usaron métodos de inyección SQL para lanzar un
ciberataque contra el banco nacional de Qatar. Los hackers consiguieron robar
más de 1.4 GB de datos, que fueron publicados poco después. Estos datos
implicaban la información de cuentas de miles de clientes, incluidos los miembros
de la familia real del país, oficiales de la inteligencia, polémicos líderes religiosos,
así como varios ciudadanos británicos, franceses y estadounidenses que estaban
indicados como espías en la base de datos del banco.