Inyecciones SQL basadas en errores

Una técnica de inyección en banda permite a los piratas informáticos aprovechar la salida de error de la base de datos. Las bases de datos se manipulan para generar un error que informa al pirata informático sobre la estructura de la base de datos. Los piratas informáticos utilizan uno de los canales de comunicación del servidor para lanzar un ataque y recuperar información mediante inyecciones en banda. Forzar la extracción de datos requiere el uso de una vulnerabilidad. Por lo general, la vulnerabilidad permite que el código muestre un error SQL del servidor en lugar de los datos requeridos. Los piratas informáticos pueden comprender la estructura de la base de datos a partir de este error.

Ejemplo de inyecciones SQL basadas en errores:

Agregar sintaxis SQL a la entrada del usuario: en esta inyección SQL , un pirata informático inserta una consulta maliciosa para obtener un error que muestra un mensaje que contiene información confidencial sobre la base de datos. Un pirata informático podría intentar escribir un comando SQL en cualquier campo de entrada como una comilla simple, una comilla doble o cualquier otro operador SQL como O, Y, NO.

Por ejemplo, para una URL de un sitio que toma un parámetro del usuario,

 entonces en ese caso: https://www.example.org/index.php?item=123

Entonces aquí el atacante puede intentar insertar cualquier comando SQL u operador en el valor de los pases,

 como: https://www.example.org/index.php?item=123′

En este caso, una base de datos podría devolver algún error como este. Si tiene un error en su sintaxis SQL, consulte el manual correspondiente a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de «VALOR». Este mensaje proporciona al atacante información como la base de datos utilizada en SQL, la sintaxis que provocó el error y dónde se produjo la sintaxis en la consulta. Para un hacker profesional con experiencia, esto será suficiente para decirle que el servidor está conectado de manera insegura a una base de datos y puede planear ataques de inyección SQL adicionales que causarán daños. Un atacante puede intentar varias consultas usando comandos como grep extract en los campos de entrada y ver si agrega qué comandos devuelven un error.

Prevención de inyección SQL basada en errores:

1. Declaraciones preparadas : la forma más segura de escribir las consultas de la base de datos es usar declaraciones preparadas con enlaces variables. Es mejor porque usa consultas parametrizadas, ya que trabajar con consultas dinámicas es complicado. El desarrollador debe definir todo el código SQL de antemano y luego cada parámetro debe pasarse a la consulta. Este método evita casi todos los ataques de inyección SQL, ya que evita que los piratas informáticos cambien la intención de la consulta y crea una separación entre la entrada del usuario y los datos. Esto resiste mejor contra las consultas maliciosas ingresadas por los usuarios. En casos esporádicos, este método afectará el rendimiento del servidor; en ese caso, se pueden utilizar otros métodos.

2. Procedimientos almacenados : esta es otra forma de evitar que los atacantes ataquen el sistema y, si se implementa correctamente, puede eliminar por completo la posibilidad de inyecciones de SQL. Para el procedimiento almacenado, cada vez que una aplicación necesita consultas SQL, se obtienen de la propia base de datos a medida que las consultas SQL se definen y almacenan allí para implementar el procedimiento almacenado.

3. Privilegio mínimo : se deben verificar todos los permisos otorgados a los dispositivos Bluetooth; solo los necesarios deben ser permitidos por el dispositivo. Por ejemplo, se debe permitir que una aplicación acceda a la base de datos para manipular los datos almacenados. Esto reduce los riesgos relacionados con la inyección SQL. Muchas aplicaciones de aspecto normal a veces solicitan acceso a los datos confidenciales presentes en la base de datos. Por lo tanto, es mejor reducir los permisos de las aplicaciones y permitir solo las importantes.

Publicación traducida automáticamente

Artículo escrito por abhinav_yadav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *