ITcomputer tu blog informático. Cursos, descargas, temas, prácticas. Ofimática, TICS, Soporte, Mantenimiento, Ciencias de la computación, programación, y mucho más!!

ITC - Tecnologías de la Información

Exploro el fascinante mundo de las tecnologías de la información en este espacio personal. Descubre conmigo las últimas tendencias, consejos prácticos y reflexiones sobre el impacto de la tecnología en nuestra vida cotidiana. ¡Acompáñame en este viaje digital!

ITC - Programación

Exploro las últimas novedades en el mundo de las tecnologías de la información y comparto insights sobre el fascinante universo de la programación.

ITC - Redes Informáticas

Aquí, exploraremos a fondo las complejidades y las últimas innovaciones en redes informáticas.

ITC - Redes, Programación, Ciberseguridad, Soporte Técnico y mucho más...

Exploro un amplio espectro que abarca desde redes y programación hasta ciberseguridad y soporte técnico.

Ciberseguridad, Seguridad Informática, Hacking

Ahora, además de abordar temas emocionantes de tecnología, nos aventuramos en el universo de la ciberseguridad.

viernes, 7 de julio de 2023

Inyección SQL

 


El método de inyección SQL permite que un código intruso entre a una aplicación en el nivel de validación de las entradas, para realizar operaciones sobre una base de datos. El lenguaje estructurado para consulta (SQL, por sus siglas en inglés; Structured Query Language) es un lenguaje basado en el desarrollo de programas que especifican o declaran un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y presentan la solución. Permite el manejo del álgebra y el cálculo relacional, lo cual admite consultar las bases de datos para recuperar información de manera sencilla y hacer cambios en la información que poseen las bases de datos.


El origen de la vulnerabilidad radica en que no se verifican de manera correcta las variables utilizadas en un programa que contiene o genera un código SQL, esto es un error que sucede en cualquier lenguaje de programación que está incorporado a otro lenguaje, y por eso es posible incrustar un código intruso dentro del código SQL programado, con lo cual se altera el funcionamiento normal del programa, pues éste ya contiene un código adicional en la base de datos.


Cuando alguien, por lo común un hacker o un cracker, logra “agregar” ese código extra a la base de datos, lo hace para dañar o espiar la información de la base de datos, lo cual se logra más fácilmente cuando el programa se desarrolló con descuido o con ignorancia del problema, exponiendo a un riesgo la seguridad del sistema; por ejemplo, si al programar hay un simple olvido de anotar comillas en el programa, esto puede ser suficiente para volver vulnerable a ese programa, ya que una inyección de código SQL se aprovecha de la sintaxis en este lenguaje para introducir comandos de manera ilícita que permitan leer o modificar la base de datos, comprometiendo el contenido de la consulta original. Una vez que el intruso ha logrado entrar mediante la inyección o adición de este código, éste puede modificar valores en la base de datos en forma arbitraria, instalar cualquier tipo de malware, tener privilegios extras con el uso de las vulnerabilidades del sistema operativo o atacar usuarios de páginas web con inyecciones de código HTML o scripts.

Cuando se ejecuta un programa vulnerable es posible “agregar o inyectar” el nuevo código. Si esta acción se ejecuta en un sitio web, tiene lugar en el servidor huésped. Una inyección de código puede resultar en la pérdida o la corrupción de datos, falta de responsabilidad en acciones o denegación de acceso. Una inyección es capaz, incluso, de tomar control total de un nodo.



Pero el sistema se vuelve más vulnerable cuando en un programa se arma una sentencia SQL en forma descuidada en el intervalo de tiempo en que un programa de la computadora se ejecuta en un sistema operativo, que inicia al poner en la memoria principal el programa, por lo que el sistema operativo empieza a ejecutar sus instrucciones, y concluye al enviar al sistema operativo la indicación de terminación. Otro momento de vulnerabilidad se produce durante la fase de desarrollo, cuando el programador indica directamente la sentencia que se debe ejecutar, pero lo hace de manera desprotegida. Cuando el programador va a hacer una consulta en la base de datos, y hace uso de los parámetros a ingresar por parte del usuario, es dentro de esos parámetros en que se puede “agregar o inyectar” un código adicional malintencionado. En el tiempo en que el programador hace la consulta, el código maligno, que ya forma parte de la base de datos, también se ejecuta y pone en práctica cualquiera de los comandos que se han señalado (insert, update, delete y select).

La inyección de encabezado HTTP es un área relativamente nueva para los ataques basados en la Web, que se produce cuando los encabezados del protocolo de transferencia de hipertexto (HTTP) se generan dinámicamente en función de la entrada del usuario. La inyección de cabeceras en las respuestas HTTP puede permitir la división de respuestas HTTP en la falsificación de solicitudes en un sitio de cruce de información (CSRF, por sus siglas en inglés; Cross Site Request Forgery) y los ataques de redireccionamiento maliciosos a través de la cabecera de ubicación del HTTP.



Existe otra forma de ataque mediante la inyección de comandos, por lo que es importante que los administradores de red conozcan que cualquier dato es factible de ser modificado, ya sea que vaya hacia un buscador o salga de éste, por lo que se recomienda que cada dato de entrada sea validado en el mismo servidor y que el usuario no pueda controlarlo. Esto significa que el administrador de la red deberá configurar el servidor para que haga una autenticación en el directorio de cada archivo que éste contenga.

Un atacante con cierta experiencia logra modificar los parámetros accountnumber y debitamount, con el fin de obtener un beneficio monetario de esta acción, ya que en general estos parámetros están asociados a cuentas y operaciones bancarias. Asimismo, también pueden ser modificados los pará- metros de atributos que tienen datos únicos y que caracterizan el comportamiento de la página que se envía. En la actualidad, hay aplicaciones web para compartir contenidos que sólo permiten que el creador del contenido pueda modificar la información, ya que ésta verifica que el usuario que solicita acceso es el verdadero autor del contenido. Pero, si es un atacante quien solicita el acceso y le es negado, al modificar el parámetro mode readwrite, él podría obtener el permiso para entrar al contenido. Cualquier mecanismo de validación que no sea suficientemente robusto, siempre será una debilidad del sistema que permita ataques maliciosos.




Share:

Blogroll

FacebookTwitterYoutubeVimeoTumblrPinterest

Translate

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *