0% encontró este documento útil (0 votos)
34 vistas

SQL Injection g1

Este documento trata sobre SQL Injection, un tipo de ataque informático. Explica qué es, los antecedentes, marco teórico, mecanismos, tipos de ataques e incluye información sobre herramientas para automatizar este tipo de ataques.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas

SQL Injection g1

Este documento trata sobre SQL Injection, un tipo de ataque informático. Explica qué es, los antecedentes, marco teórico, mecanismos, tipos de ataques e incluye información sobre herramientas para automatizar este tipo de ataques.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 47

SQL INJECTION

Mecanismos de ataque y defensa

Grupo 1:
-

Blas Pagola
Cruz Ventura
Esteves Rosales
Quiroz ato
Rojas Barraza
Villavicencio Antnez

Qu es SQL INJECTION?
Es un tipo de ataque que se aprovecha de una vulnerabilidad para cambiar el
efecto pretendido de una consulta SQL mediante la inyeccin o insercin de
palabras clave de SQL u operadores en la consulta.

Antecedentes
IBM en los 70
ANSI en los 80

ISO (86,89,92)
SQL(SEQUEL)

Jeff Forristral

Antecedentes
Porqu atacar?

Marco Terico
Seguridad de la Informacin
Ataque Informtico
SQL Injection
Tipos de SQL Injection
CADENAS MAL FILTRADAS
INCORRECTA VERIFICACIN DE TIPO
EVASIN DE FIRMA
BLIND SQL EJECTION

Marco Terico

Mecanismos de Inyeccin
Inyeccin a travs de entras de usuario:
En este caso, los atacantes inyectan comandos SQL a travs de entradas de
usuario.

Mecanismos de Inyeccin
Inyeccin a travs de cookies:
Si una aplicacin Web utiliza contenidos de la cookie para construir consultas
SQL, un atacante podra enviar fcilmente un ataque.

Mecanismos de Inyeccin
Inyeccin a travs de variables de servidor:
Si estas variables se registran en una base de datos sin un control adecuado,
esto podra crear una vulnerabilidad de inyeccin SQL. Cuando la consulta
para registrar la variable de servidor se emite a la base de datos, entonces se
desencadena el ataque.

Mecanismos de Inyeccin
Inyeccin de segundo orden:
Los atacantes implantan entradas maliciosas en un sistema o base de datos
para activar indirectamente un ataque por inyeccin SQL cuando esa entrada
se utiliza en un momento posterior.

Intencin de ataque
La identificacin de parmetros inyectables
Realizacin de la base de datos de huellas digitales

La determinacin del esquema de base de datos


Extraccin de datos

La adicin o modificacin de los datos


Evadir la deteccin

Anulacin de autenticacin

Tipos de Ataques de Inyeccin SQL


Tautologa:
Objetivo: Evitar la autenticacin, la identificacin de los parmetros de
inyectables, la extraccin de datos.
Descripcin: El ataque consiste en inyectar cdigo en una o ms sentencias
condicionales para que siempre dan como resultado verdadero.
SELECT accounts FROM users WHERE
'OR 1'='1'-login= OR 1=1-- AND pass= AND pin=

Tipos de Ataques de Inyeccin SQL


Consultas incorrectas Lgicamente o ilegales:
Objetivo:La identificacin de parmetros inyectables, toma de la huella digital
de la base de datos, la extraccin de datos.
Descripcin:Consiste en aprovechar una vulnerabilidad para que la pgina
Microsoft OLE DB Provider for SQL Server (0x80040E07) Error
muestre
un error
predeterminado
devuelto por
servidores,
aplicaciones
converting
nvarchar
value CreditCards
to alos
column
of dataentype
int.
web esto es a menudo muy descriptivo.
convert(int,(select top 1 name
SELECT accounts FROM users WHERE login=
from sysobjects where xtype=u))
AND pass= AND pin= convert (int,(select top
1 name from sysobjects where xtype=u))

Tipos de Ataques de Inyeccin SQL


Consulta de Unin:
Objetivo: Para evitar la autenticacin, la extraccin de datos.

Descripcin: Con esta tcnica, un atacante puede engaar a la aplicacin en la


devolucin de datos de una tabla diferente a la que estaba destinada por el
desarrollador.
UNION SELECT cardNo from
CreditCards where acctNo=10032-SELECT accounts FROM users WHERE login= UNION
SELECT cardNo from CreditCards where
acctNo=10032 -- AND pass= AND pin=

Tipos de Ataques de Inyeccin SQL


Consulta Piggy-Backed:
Objetivo: La extraccin de los datos, aadir o modificar datos, la realizacin de
denegacin de servicio, la ejecucin de comandos remotos.
Descripcin: El atacante intenta inyectar consultas adicionales en la consulta
original. Se distinguen de otros porque, en este caso, los atacantes no estn
tratando de modificar la consulta prevista originalmente; en cambio, estn
tratando de incluir las nuevas y distintas consultas.
SELECT accounts FROM users WHERE login=doe
; drop table users -AND pass= ; drop table users -- AND pin=123

Tipos de Ataques de Inyeccin SQL


Procedimientos Almacenados:
Objetivos: Escalamiento de privilegios, denegacin de servicio, ejecucin de
comandos remotos.
Descripcin: Los ataques por inyeccin SQL de este tipo tratan de ejecutar
procedimientos almacenados presentes en la base de datos.

; SHUTDOWN; --

SELECT accounts FROM users WHERE login=doe


AND pass= ; SHUTDOWN; -- AND pin=

Tipos de Ataques de Inyeccin SQL


Inferencia:
Objetivos: Identificacin de parmetros de inyectables, extraccin de datos,
determinacin de esquema de base de datos.
Descripcin: En este ataque, la consulta se modifica para reestructurarse en la
forma de una accin que se ejecuta sobre la base de la respuesta a una
pregunta de verdadero o falso
Inyeccin ciega
Ataques de temporizacin

Tipos de Ataques de Inyeccin SQL


Inyeccin ciega:
legalUser and 1=0 --

SELECT accounts FROM users WHERE


login=legalUser and 1=0 -- AND pass= AND pin=0

legalUser and 1=1 --

SELECT accounts FROM users WHERE


login=legalUser and 1=1 -- AND pass= AND pin=0

Ataque de Temporizacin:
legalUser and ASCII(SUBSTRING((select top 1
name from sysobjects),1,1)) > X WAITFOR 5 -SELECT accounts FROM users WHERE login=legalUser and
ASCII(SUBSTRING((select top 1 name from sysobjects),1,1)) >
X WAITFOR 5 -- AND pass= AND pin=0

Tipos de Ataques de Inyeccin SQL


Codificaciones alternas:
Objetivos: Evadir la deteccin.

Descripcin: En este ataque, el texto inyectado se modifica a fin de evitar la


deteccin por prcticas de codificacin defensivas y tambin muchas
tcnicas de prevencin automatizados.
legalUser; exec(0x73687574646f776e) -SELECT accounts FROM users WHERE
login=legalUser; exec(char(0x73687574646f776e)) - AND pass= AND pin=

Causas que permiten la Inyeccin SQL

Consecuencias que pueden producir la Inyeccin


SQL

Blind SQL Injection


Inyeccin SQL de cambio de comportamiento cero (ISQL0):
Una cadena que se inyecta en una consulta SQL y no realiza ningn
cambio en los resultados.
Inyeccin SQL de cambio de comportamiento positivo (ISQL+):
Una cadena que s que provoca cambios.

Ejemplo - Blind SQL Injection


Supongamos una pgina de una aplicacin web del tipo.
http://www.miweb.com/noticia.php?id=1

Suponemos de que 1 es el valor del parmetro id y dicho parmetro va a ser utilizado en


una consulta a la base de datos de la siguiente manera.
Select campos From tablas Where condiciones and id=1
Una inyeccin ISQL0 sera algo como lo siguiente:
http://www.miweb.com/noticia.php?id=1+1000-1000
http://www.miweb.com/noticia.php?id=1 and 1=1
http://www.miweb.com/noticia.php?id=1 or 1=2

Una ISQL+ sera algo como lo siguiente:


http://www.miweb.com/noticia.php?id=1 and 1=2
http://www.miweb.com/noticia.php?id=-1 or 1=1
http://www.miweb.com/noticia.php?id=1+1

Mtodos de Automatizacin

Herramientas para Inyeccin SQL


1.

Absinthe:

Es una herramienta
basada en interfaz grfica que
automatiza el proceso de descargar el
esquema y los contenidos de una base
de datos que es vulnerable a Blind SQL
Injection.
Caractersticas:
- Totalmente automtico
- Inyecta MSsql, Postgres Sql y Oracle.
- Puedes editar el query.
- Soporta proxy.
- Interfaz GUI

Herramientas para Inyeccin SQL


2. SQLInjector: Esta herramienta utiliza como forma de automatizacin la bsqueda de
palabras clave en los resultados positivos. Es decir, se busca encontrar una palabra que
aparezca en los resultados positivos y que no aparezca en los resultados negativos.Para
ejecutarse se hace con un comando como el siguiente:

Donde:
t: Es el servidor
p: Es el puerto
f: La aplicacin vulnerable y el parmetro. En un fichero de texto.
a: La accin a realizar
o: Fichero de salida
qf: La consulta a ejecutar a ciegas. En un fichero de texto.
gc: Cdigo devuelto por el servidor cuando es un valor correcto

ec: Cdigo devuelto por el servidor cuando se produce


un error
k: Valor de referencia correcto en el parmetro
vulnerable
gt: Palabra clave en resultado positivo
s: Tipo de base de datos (MySQL, Oracle, Microsoft
SQL Server, Informix, IBM DB2, Sybase y Access).

Herramientas para Inyeccin SQL


3. SQLbftools: Coleccin de herramientas para obtener informacin de
MySQL disponible utilizando un ataque de blind SQL Injection. Est
compuesta de tres aplicaciones:
mysqlbf
mysqlget
mysqlst

Herramientas para Inyeccin SQL


mysqlbf
Es la herramienta principal para la automatizacin de la tcnica de BlindSQL. Para poder
ejecutarla se debe contar con un servidor vulnerable en el que el parmetro est al final de la
URL y la expresin no sea compleja.
Su funcionamiento se realiza mediante el siguiente comando:

Dnde:
host: es la URL con el servidor, el programa y el parmetro vulnerable. Comando
es un comando a ejecutar de MySQL.
palabraclave: es el valor que solo se encuentra en la pgina de resultado positivo.

Herramientas para Inyeccin SQL


Extraccin user()

Herramientas para Inyeccin SQL


En la siguiente imagen se ve cmo extraer la versin de la base de datos
Extraccin version()

Herramientas para Inyeccin SQL


mysqlget
Es la herramienta pensada para
descargar ficheros del servidor.
Aprovechando las funciones a
ciegas y los comandos del motor de
base de datos, se puede ir leyendo
letra a letra cualquier fichero del
servidor.
En la siguiente imagen se ve cmo
se puede descargar el fichero
/etc/passwd a partir de una
vulnerabilidad Blind SQL Injection
usando mysqlget.

mysqlst
Esta herramienta se utiliza para volcar los datos de una tabla.
Primero se consulta el diccionario de datos para extraer el
nmero de campos, los nombres, los tipos de datos de cada
campo y por ltimo, el volcado de las filas.

Herramientas para Inyeccin SQL


4. Bfsql:

La herramienta sigue utilizando el sistema de palabra clave en valores positivos. La


herramienta no pide la intervencin del usuario para averiguar cul es la palabra clave, sino que
realiza peticiones con inyecciones de cambio de comportamiento cero e inyecciones de cambio
de comportamiento positivo.
5. SQL Map: Es una herramienta desarrollada en python para realizar inyeccin de cdigo sql
automticamente. Su objetivo es detectar y aprovechar las vulnerabilidades de inyeccin SQL en
aplicaciones web..

Herramientas para Inyeccin SQL


6. SQL Power Injection Injector:
utiliza tcnicas de SQL Injection
tradicionales basadas en mensajes de
error y tcnicas de Blind SQL Injection
usando dos sistemas. Comparacin de
resultados completos, equivalente a
realizar un HASH MD5 de la pgina
de resultados o bien, para los motores
de Microsoft SQL Server, y solo para
esos motores, tambin se puede
realizar utilizando el sistema basado en
tiempos con WAIT FOR (o time delay)
descrito por Chrish Anley en (more)
Advanced SQL Injection.

Consecuencias que tienen un SQLIA

Confidencialidad: Dado que las bases de datos SQL generalmente almacenan


informacin sensible, la prdida de la confiabilidad es un problema frecuente con las
vulnerabilidades de inyeccin SQL.

Autenticacin: Si se utilizan consultas SQL po-bres para chequear nombres de


usuarios u contra-seas, puede ser posible conectarse a un sistema como otro usuario
sin conocimiento previo de la contrasea.

Consecuencias que tienen un SQLIA

Autorizacin: Si la informacin de autorizacin es almacenada en una base de datos


SQL, puede ser posible cambiar esta informacin mediante la explotacin exitosa de una
vulnerabilidad por inyec-cin SQL.
Integridad: As como puede ser posible leer informacin sensible, tambin es posible
realizar cambios o incluso borrar esta informacin mediante un ataque por inyeccin
SQL.

Prevencin de Ataques SQLIAs

Prevencin de Ataques SQLIAs


Prcticas de Codificacin Defensiva
1. Chequeo de Tipos de entrada: Verificar las vulnerabilidades segn tipo de entrada.
2. Codificacin de entrada: codificar una cadena de tal manera que todos los meta-caracteres son
especialmente codificados e interpretados por la base de datos como caracteres normales

3. Patrones de validacin positiva: Los desarrolladores deberan ser capaces de especificar todas las
formas de entrada legal positiva, la validacin positiva es la forma ms segura para comprobar entradas.

4. Identificacin de todas las fuentes de entrada: Todas las


fuentes de entrada deben ser comprobados.

Prevencin de Ataques SQLIAs


Pseudo remedios
Primero: Palabras claves y operadores
WHERE

FROM
SELECT
OMar

Segundo: Prepared Statement

Prevencin de Ataques SQLIAs


Tcnicas de prevencin y deteccin
a. Pruebas de Caja Negra: La tcnica utiliza un buscador web para identificar todos los puntos en
una aplicacin web que puede ser utilizado para inyectar SQLIAs. El siguiente paso es dirigir el
ataque hacia estos puntos sobre la base de una lista especificada de patrones y tcnicas de ataque
b. Chequeo de Cdigo Esttico: JDBC - Checker es una tcnica para comprobar estticamente la
correccin de tipo consultas SQL generado dinmicamente, puede prevenir ataques que se
aprovechan de los desajustes de tipo de entrada en una cadena de consulta generado
dinmicamente
c. Anlisis Esttico y Dinmico Combinado: Tcnica basada en modelo que combina anlisis
esttico y monitoreo en tiempo de ejecucin. En su fase esttica, construye modelos de los
diferentes tipos de consultas de una aplicacin en cada punto de acceso a la base de datos. En su
fase dinmica intercepta todas las consultas antes de que sean enviados a la base de datos y
comprueba que cada consulta pertenezca a un modelo de definido en la fase esttica.

Prevencin de Ataques SQLIAs


Tcnicas de prevencin y deteccin
d. Enfoque Basado en la Contaminacin: WebSSARI detecta errores relacionadas a la
validaciones de entrada, El anlisis detecta los puntos en las cuales las precondiciones no se
han cumplido y puede sugerir filtros y funciones de desinfeccin que pueden aadirse
automticamente a la aplicacin para satisfacer las precondiciones

e .Nuevos Paradigmas de Desarrollo de Consulta: Mediante el uso de encapsulacin de


consultas de la base de datos proporcionan una manera segura y confiable para el acceso
cambiando el paradigma del proceso de construccin de una consulta a uno sistemtica que
utiliza un API para la comprobacin eficiente.
f. Sistemas de Deteccin de Intrusos: Tcnica basada en machine learning que construye
modelos de las consultas tpicas y luego monitorea la aplicacin en tiempo de ejecucin para
identificar las consultas que no coinciden con el modelo.

Prevencin de Ataques SQLIAs


Tcnicas de prevencin y deteccin
g. Filtros de Proxy: Solucin mediante el cual el desarrollador genera polticas que establecen
la admisin o prohibicin de flujos de datos que navegan travs de la aplicacin web.

h. Asignacin Aleatoria de Conjunto de Instrucciones: SQLrand es un enfoque basado en


la aleatorizacin de conjunto de instrucciones, proporciona un marco que permite a los
desarrolladores crear consultas utilizando instrucciones aleatorizadas en lugar de palabras
clave de SQL. Luego Un filtro proxy intercepta las consultas a la base de datos y cambia
aleatoriamente las palabras clave.

Prevencin de Ataques SQLIAs


Tcnicas de prevencin y deteccin

Detiene
completamente
ataques de este tipo

x No tiene efecto sobre es tipo


o Puede ser asumido pero si
ninguna garanta.
- Puede ser dirigido al tipo de
ataque de forma parcial

Prevencin de Ataques SQLIAs


Tcnicas de prevencin y deteccin

Prevencin de Ataques SQLIAs


Tcnicas de prevencin y deteccin

Caso prctico

Conclusiones y recomendaciones

SQL INJECTION
Mecanismos de ataque y defensa

Grupo 1:
-

Blas Pagola
Cruz Ventura
Esteves Rosales
Quiroz ato
Rojas Barraza
Villavicencio Antnez

También podría gustarte