Escáner de inyección SQL avanzado - IIS & DBO
Mecanismos avanzados de inyección SQL que pueden ser utilizados por usuarios maliciosos para obtener información crítica y aprovecharla para obtener el control completo de un sistema informático.
Nota explicativa
Este artículo no intenta explicar una nueva técnica de compromiso de sistemas informáticos, la técnica de inyección SQL es muy antigua y conocida, pero al mismo tiempo puede ser muy poderosa. El artículo tampoco refleja la exploit de una vulnerabilidad desconocida, esto se conoce y ya se ha informado, que si puede reflejar son mecanismos avanzados no publicados de inyección SQL que pueden ser utilizados por usuarios maliciosos para obtener información crítica y aprovecharlo para obtener el control completo de un sistema informático.
La combinación de esta técnica con un servidor web IIS con permisos elevados de usuario (DBO) en la base de datos de Microsoft SQL Server puede conducir a una pérdida completa de control del servidor afectado.
Este artículo intentará explicar el riesgo potencial causado por la configuración errónea de una base de datos SQL que interactúa con una página web externa a través de un servidor web IIS y dar detalles sobre cómo los usuarios maliciosos pueden beneficiarse de ella.
Resumen corto (Wikipedia)
La inyección de SQL es una técnica de inyección de código, utilizada para atacar aplicaciones basadas en datos, en las que las declaraciones SQL nefastas se insertan en un campo de entrada para su ejecución (por ejemplo, para volcar el contenido de la base de datos al atacante). La inyección de SQL debe explotar una vulnerabilidad de seguridad en el software de una aplicación, por ejemplo, cuando la entrada del usuario se filtra incorrectamente para caracteres de escape literal de cadena integrados en declaraciones SQL o la entrada del usuario no se escribe y se ejecuta inesperadamente inesperadamente. La inyección de SQL se conoce principalmente como un vector de ataque para los sitios web, pero se puede usar para atacar cualquier tipo de base de datos SQL.
Los ataques de inyección SQL permiten a los atacantes falsificar la identidad, manipular los datos existentes, causar problemas de repudio, como anular las transacciones o cambiar los saldos, permitir la divulgación completa de todos los datos en el sistema, destruir los datos o hacerlo no disponible, y convertirse en administradores del servidor de bases de datos.
Vulnerabilidad
Suponiendo que en la página web hay problemas de seguridad con el paso de los parámetros para permitir la inyección SQL, el principal problema es que el servidor web IIS puede mostrar información crítica al usuario utilizando una función de conversión no válida Transact-SQL. Imagine la siguiente URL donde el parámetro ID permite la inyección.
https://www.victim.com/index.aspx?id=1
Un usuario malicioso podría anular el valor del parámetro ID por la función de converso Transact-SQL
convertir (int, (seleccionar+usuario));-
La URL final sería de este estilo:
https://www.victim.com/index.aspx?id=convert(int, (select+user));-
La función de conversión intenta convertir una cadena en entero, lo que causa una excepción en la que el servidor web IIS comete un error serio que muestra el valor de la consulta ejecutada.
Una salida típica sería algo como esto:
La conversión falló al convertir el valor nvarchar '{user}' al tipo de datos int.
Como podemos ver, el valor {usuario} corresponde al valor actual del usuario de la base de datos, además de todo esto si el valor devuelto es DBO nos dirá que el usuario de la base de datos tiene privilegios de ejecución máximos, por lo que podrá ejecutar los comandos de shell utilizando la función de transactación xp_cmdshell-sql.
El uso de una página web con un usuario de la base de datos con máximos privilegios es un error de seguridad grave en el que los administradores del sistema no deben caer.
En resumen, podría decir que la vulnerabilidad consta de tres factores:
- Error al manejar los parámetros GET/POST que permiten la inyección SQL. (Desarrollador de software)
- IIS Servidor web que muestra la información de la función de conversión. (Microsoft)
- Use un usuario de la base de datos en la página web con los máximos privilegios. (Administrador del sistema/desarrollador de software)
Versión 4.0 (privado)
La versión 4.0 extendida del escáner está en un repositorio privado (visible por patrocinadores) con todas sus funcionalidades.
- https://github.com/iricartb/advanced-sql-inyección-scanner-release
Más información
https://advanced-sql-injection.blogspot.com/2017/06/ivan- icart-borges-advanced-sql.html