viernes, octubre 09, 2009

Connection String Attacks (V de VI)

*********************************************************************************************
- Connection String Attacks (I de VI)
- Connection String Attacks (II de VI)
- Connection String Attacks (III de VI)
- Connection String Attacks (IV de VI)
- Connection String Attacks (V de VI)
- Connection String Attacks (VI de VI)
*********************************************************************************************

Ejemplo: myLittleAdmin & myLittleBackup

En myLittleAdmin y en myLittleBackutp, una vez conectado a la aplicación, es posible acceder a la cadena de conexión utilizada para realizar el acceso. En ella se puede ver claramente la polución de parámetros, con dos valores para Data Source y dos valores para Integrated Security.


Figura 17: CSPP en myLittleAdmin

En la Figura 17 se aprecia cómo, tras el parámetro User ID, se ha inyectado el parámetro Data Source con el valor Localhost. Este parámetro es el también el primero de la cadena de conexión, pero el primero es configurado por la aplicación web. En este ejemplo, los valores de ambos son distintos, sin embargo, el que prevalece es el último.

Lo mismo sucede con el parámetro Integrated Security, que aparece inicialmente con el valor no, pero el que prevalece es el inyectado en la contraseña con valor True. El resultado es acceso total al servidor con la cuenta de la aplicación, como se puede ver en la imagen de la Figura 18.


Figura 18: Consultando la tabla master..sysusers


CSPP con bases de datos Oracle

Los motores de bases de datos Oracle permiten, de igual forma, utilizar configuraciones de autenticación integrada tanto en sistemas Microsoft Windows como en sistemas UNIX/LINUX. Es decisión del adminsitrador permitir o no que una conexión a la base de datos se haga con una cuenta del sistema operativo mediante la creación de usuarios identificados externamente. Así, cuando se cera la cuenta del usuario se usa una sintaxis como la que sigue:

Create user opsysuser identified externally;

En la configuración de la instancia se puede decidir habilitar o no esta característica de forma global y, con el objetivo de reconocer estas cuentas, obligar que todas tengan un prefijo común. Así, si el adminsitrador establece que todas las cuentas deban tener un prefijo como "OPS$", para que el usuario del sistema webuser pueda conectarse usando autenticación integrada, deberá haberse creado en la base de datos un usuario identificado externamente con el nombre OPS$webuser. Para conocer el prefijo configurado se puede ejecutar el comando show os_authent_prefix. Este valor también puede ser NULL.

Para probar estos ataques se ha creado una aplicación web de prueba en la que se ha creado la cuenta del administrador dentro del motor de bases de datos Oracle en el que no se ha configurado un prefijo especial para la cuenta.

Como se peude ver en la Figura 19, la aplicación está ejecutándose con la cuenta de Adminsitrador del sistema local, en este caso la máqiuna local se llama GN708YWYAIYEQ5. La aplicación web solicita las credenciales del usuario que van a ser incluidas en la cadena de conexión contra la base de datos Oracle.


Figura 19: CSPP en una aplicación web con Oracle

Una vez ejecutado el ataque la aplicación web, si se ha podido realizar la conexión, muestra la lista de usuarios en la tabla all_users.


Figura 20: Acceso conseguido a través de un ataque CSPP

Una de las posibilidades que ofrece en Oracle, es la posibilidad de elevar una conexión de cuenta de administración a una conexión como sysdba, permitiendo entonces que desde esa conexión se pueda arrancar y parar la instancia, entre otras accciones.

CSPP con Bases de Datos MySQL

Los ataques CSPP, realizados en componentes .NET susceptibles de este ataque, contra bases de datos MySQL también pueden realizarse. Esto permitiría a un atacante reescribir, total o parcialmente, la cadena de conexión en una aplicación que utilice una base de datos MySQL. Sin embargo, las bases de datos MySQL no permiten la autenticación integrada por diseño. Aunque existen algunas soluciones personalizadas que enlazan la cuenta de la base de datos con la cuenta del sistema no se puede realizar uso de ningún valor similar a Integrated Security en la cadena de conexión.

*********************************************************************************************
- Connection String Attacks (I de VI)
- Connection String Attacks (II de VI)
- Connection String Attacks (III de VI)
- Connection String Attacks (IV de VI)
- Connection String Attacks (V de VI)
- Connection String Attacks (VI de VI)
*********************************************************************************************

1 comentario:

  1. oe maligno estos tutos estan demaciado buenos enserio =)

    Saludos y Suerte...

    ResponderEliminar