Actualizado el 21 de Marzo del 2018 (Publicado el 18 de Febrero del 2018)
875 visualizaciones desde el 18 de Febrero del 2018
1,4 MB
68 paginas
Creado hace 11a (12/07/2012)
Ataques a BB.
DD., SQL
Injection
José María Alonso Cebrián
Antonio Guzmán Sacristán
Pedro Laguna Durán
Alejandro Martín Bailón
PID_00191663
CC-BY-NC-ND • PID_00191663
Ataques a BB. DD., SQL Injection
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de
Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos
y transmitirlos públicamente siempre que citéis el autor y la fuente (FUOC. Fundación para la Universitat Oberta de Catalunya),
no hagáis de ellos un uso comercial y ni obra derivada. La licencia completa se puede consultar en http://creativecommons.org/
licenses/by-nc-nd/3.0/es/legalcode.es
CC-BY-NC-ND • PID_00191663
Índice
Ataques a BB. DD., SQL Injection
1. SQL Injection.......................................................................................
1.1.
Entorno de explotación del ataque ............................................
1.2. Herramienta Priamos ..................................................................
2. Blind SQL Injection...........................................................................
El parámetro vulnerable ..............................................................
2.1.
2.2. Cómo se atacan este tipo de vulnerabilidades ............................
2.3. Métodos de automatización ........................................................
2.4. Herramientas ...............................................................................
2.4.1. Absinthe .........................................................................
SQLInjector ....................................................................
2.4.2.
SQLbftools ......................................................................
2.4.3.
2.4.4.
Bfsql ...............................................................................
SQL PowerInjector .........................................................
2.4.5.
2.4.6.
SQLiBF ............................................................................
2.4.7. Web Inspect ...................................................................
2.4.8. Acunetix Web Vulnerability Scanner ............................
Protección contra Blind SQL Injection .......................................
2.5.
3. Blind SQL Injection basándose en tiempos.................................
3.1.
Time-Based Blind SQL Injection .................................................
3.2. Heavy Queries .............................................................................
3.2.1. Cómo generar consultas pesadas ...................................
3.2.2. Contramedidas ...............................................................
4. Arithmetic Blind SQL Injection.....................................................
4.1. Remote File Downloading ..........................................................
4.2.
Booleanización de datos .............................................................
4.3. Metodología de trabajo ...............................................................
4.4. Microsoft SQL Server 2000 y 2005 mediante fuentes de datos
infrecuentes .................................................................................
4.4.1.
Restricciones y permisos para uso de fuentes de
datos infrecuentes ..........................................................
Extracción de ficheros ...................................................
4.4.2.
4.5. Microsoft SQL Server 2000 mediante opciones de carga
masiva ..........................................................................................
Restricciones y permisos ................................................
4.5.1.
4.5.2.
Proceso de la extracción del fichero ..............................
4.6. Microsoft SQL Server 2005 y 2008 mediante opciones de
carga masiva ................................................................................
Restricciones y permisos ................................................
4.6.1.
4.6.2.
Proceso de la extracción del fichero ..............................
5
5
11
13
13
14
16
18
18
19
21
22
23
23
24
24
25
27
28
28
30
33
34
41
41
42
44
45
47
47
47
48
50
51
51
CC-BY-NC-ND • PID_00191663
Ataques a BB. DD., SQL Injection
5. Ficheros remotos en SQL Inyection...............................................
5.1. Remote File Downloading en MySQL ........................................
5.1.1.
Load_File: Acceso directo a fichero como cadena de
bytes ...............................................................................
5.1.2. Carga de fichero en tabla temporal ...............................
5.2. Remote File Downloading en Oracle Database ...........................
5.2.1.
Los objetos directorio ....................................................
5.2.2. Volcado de fichero a tabla con paquete UTL_FILE........
5.2.3.
Enlazado de fichero mediante External Tables y
Oracle_loader .................................................................
5.2.4. Acceso a ficheros binarios mediante el paquete
DBMS_LOB .....................................................................
6. Consejos en SQL Injection................................................................
6.1.
Identificación mediante funciones .............................................
6.2. Objetivos principales para cada base de datos ............................
6.2.1.
Base de datos Oracle ......................................................
6.2.2.
Base de datos Microsoft SQL Server ..............................
6.2.3.
Base de datos DB2 .........................................................
6.2.4.
Base de datos Mysql ......................................................
IDS Evasion .................................................................................
6.3.
Bibliografía.................................................................................................
53
53
53
54
55
55
56
58
58
60
60
60
61
62
63
64
65
67
CC-BY-NC-ND • PID_00191663
1. SQL Injection
5
Ataques a BB. DD., SQL Injection
Mediante la inyección SQL un atacante podría realizar entre otras cosas las
siguientes acciones contra el sistema:
• Descubrimiento de información (information disclosure): Las técnicas de in-
yección SQL pueden permitir a un atacante modificar consultas para ac-
ceder a registros y/o objetos de la base de datos a los que inicialmente no
tenía acceso.
•
Elevación de privilegios: Todos los sistemas de autenticación que utilicen
credenciales almacenados en motores de bases de datos hacen que una
vulnerabilidad de inyección SQL pueda permitir a un atacante acceder a los
identificadores de usuarios más privilegiados y cambiarse las credenciales.
• Denegación de servicio: La modificación de comandos SQL puede llevar a
la ejecución de acciones destructivas como el borrado de datos, objetos o
la parada de servicios con comandos de parada y arranque de los sistemas.
Asimismo, se pueden inyectar comandos que generen un alto cómputo en
el motor de base de datos que haga que el servicio no responda en tiempos
útiles a los usuarios legales.
•
Suplantación de usuarios: Al poder acceder al sistema de credenciales, es
posible que un atacante obtenga las credenciales de otro usuario y realice
acciones con la identidad robada o “spoofeada” a otro usuario.
1.1. Entorno de explotación del ataque
Los condicionantes necesarios para que se pueda dar en una aplicación web la
vulnerabilidad de inyección de comandos SQL son los siguientes:
•
Falloenlacomprobacióndeparámetrosdeentrada: Se considera pa-
rámetro de entrada cualquier valor que provenga desde cliente. En este
entorno se debe asumir “un ataque inteligente”, por lo que cualquiera de
estos parámetros pueden ser enviados con “malicia”. Se debe asumir tam-
bién que cualquier medida de protección implantada en el cliente puede
fallar. Como ejemplos de parámetros a considerar donde se suelen dar es-
tos fallos, tendríamos:
– Campos de formularios: Utilizados en métodos de llamadas POST
– Campos de llamada GET pasados por variables.
–
Parámetros de llamadas a funciones Javascript.
– Valores en cabeceras http.
CC-BY-NC-ND • PID_00191663
6
Ataques a BB. DD., SQL Injection
– Datos almacenados en cookies.
• Utilizacióndeparámetrosenlaconstruccióndellamadasabasesde
datos: El problema no reside en la utilización de los parámetros en las
sentencias SQL, sino en la utilización de parámetros que no han sido com-
probados correctamente.
• Construcciónnofiabledesentencias: Existen diversas formas de crear
una sentencia SQL dinámica dentro de una aplicación web, que dependen
del lenguaje utilizado. A la hora de crear una sentencia SQL dinámica den-
tro de una aplicación web, existen, dependiendo del lenguaje utilizado,
diversas maneras. El problema se genera con la utilización de una estruc-
tura de construcción de sentencias SQL basada en la concatenación de ca-
denas de caracteres, es decir, el programador toma la sentencia como una
cadena alfanumérica a la que va concatenando el valor de los parámetros
recogidos, lo que implica que tanto los comandos como los parámetros
tengan el mismo nivel dentro de la cadena. Cuando se acaba de construir
el comando no se puede diferenciar qué parte ha sido introducida por el
programador y qué parte procede de los parámetros.
Veamos algunos ejemplos:
1)Ejemplodeentornodeextracióndeinformacióndelabasededatos
medianteconsultasSQL:
Tabla_Usuarios
IDUsuario
Usuario
Clave
Nombre
NivelAcceso
0
1
2
Root
Ramon
Carlos
RE$%·&
Administrador
Administrador
ASFer3454
Ramon Martinez Usuario
Sdfgre32!
Carlos Lucas
Usuario
Ejemplo de tabla de usuarios
Sobre esta base de datos se crea una aplicación web que mediante un formu-
lario pide a los usuarios las credenciales de acceso:
Figura 1: Formulario de acceso a usuarios de ejemplo
CC-BY-NC-ND • PID_00191663
7
Ataques a BB. DD., SQL Injection
En este entor
Comentarios de: Ataques a bases de datos, SQL Injection (0)
No hay comentarios