Google hacking: los operadores secretos del buscador de Google

Google hacking: los operadores secretos del buscador de Google

Google no necesita presentación: probablemente sea el buscador más potente que se usa hoy, hasta el punto de que a veces lo abrimos solo para comprobar si tenemos conexión. El problema es que el poder de esa sencilla barra de búsqueda se ha convertido en motivo de preocupación para muchos, y quien todavía no esté preocupado debería estarlo. ¡Ahora verás por qué!

Esta lista, que no pretende ser exhaustiva, puede ayudarte a protegerte de los buscadores y, sobre todo, de Google, pero debes tener mucho cuidado al controlar cómo ve tu web Googlebot (o el rastreador de cualquier otro buscador) si no quieres que tus páginas desaparezcan por completo de sus resultados.

Conviene saber que las búsquedas en Google no distinguen entre mayúsculas y minúsculas, ni siquiera si las mezclas: Security, SECURITY y SeCuriTY devuelven exactamente el mismo resultado. Esta regla tiene, eso sí, una excepción: los operadores lógicos.

Operadores lógicos y símbolos

Google entiende tres operadores lógicos: AND, NOT y OR. Por eso reconoce "OR" como operador, mientras que "Or", "oR" u "or" los trata como elementos de búsqueda o palabras clave.

El operador AND sirve para incluir varias palabras clave en una misma búsqueda y se puede sustituir por un simple espacio " ", aunque los resultados cambian ligeramente entre una forma y otra, como verás si comparas, por ejemplo, "reverse AND engineering AND tutorials" y "reverse engineering tutorials".

El operador NOT es utilísimo para excluir algunas palabras clave de los resultados de una búsqueda. Equivale al signo "-" (menos) delante de una palabra; para entender cómo funciona, busca "email service" y después "email service -marketing" (fíjate en que no hay espacio entre "-" y "marketing").

El operador OR sirve para que los resultados de una búsqueda incluyan una palabra clave u otra, pero no las dos, y equivale a usar "|". Por ejemplo, para Google "reverse OR engineering" significa exactamente lo mismo que "reverse|engineering" (pruébalo y luego prueba "reverse engineering" para ver la diferencia).

Además de estos operadores, Google distingue algunos símbolos, como ~, +, * y "".

Uso de la virgulilla "~"

Este pequeño carácter sirve para que los resultados incluyan la palabra clave indicada, sus sinónimos y términos parecidos. Por ejemplo, si buscas "it security ~tools", obtendrás un resultado más completo que con "it security tools", ya que Google tendrá en cuenta también términos como "Software" y los mostrará entre los resultados.

Uso del signo más "+"

Google tiende a ignorar los signos de puntuación y a descartar palabras cortas como "we", "the", "to" y "of"… Si pones el signo más delante de una palabra, le dices a Google que la incluya en la búsqueda. Así, por ejemplo, el resultado de "security is never complete" será sin duda distinto del de "security +is never complete".

Uso de las comillas "" (búsqueda de la frase exacta)

Si estás seguro de que has escrito bien una palabra pero Google sigue proponiéndote correcciones ortográficas, o si quieres buscar una frase, una cita o un mensaje de error…, escribir la búsqueda entre comillas te dará resultados más pertinentes. Prueba, por ejemplo, a buscar "Debugging DLLs" con y sin comillas.

Uso del asterisco "*", también llamado comodín o wildcard

El comodín es muy útil cuando quieres buscar algo pero te faltan una o varias palabras (suele usarse junto con la búsqueda de frase exacta). Por ejemplo, si quieres encontrar el título de la película "Get the Gringo" y solo recuerdas "Get The", puedes probar con "Get The * movie"; prueba también con "the art of *" hacking book.

Ahora que sabemos algo más sobre cómo interpreta la barra de búsqueda de Google lo que escribimos, veamos otros operadores y palabras clave más interesantes. ¡Sobre todo si hablamos de seguridad!

Define:palabra

Esta búsqueda devuelve la definición de la palabra indicada a partir de las fuentes (webs) más fiables. Define:Security

Filetype:extensión_de_archivo

Con Filetype puedes encontrar archivos con una extensión concreta, es decir, limitas la búsqueda a un tipo de archivo determinado. Ten en cuenta que no hay espacio entre filetype: y la palabra que lo sigue. Por ejemplo, podemos buscar copias de seguridad de bases de datos con "backup filetype:sql".

Ext:extensión_de_archivo

Este operador cumple más o menos la misma función que el anterior (filetype), con la diferencia de que, si usas "ext" para buscar extensiones poco habituales (como dmp, ks, key…), obtendrás resultados más profundos y precisos.

Intitle:palabra(s)_clave

Este operador permite buscar una sola palabra o una frase entera que aparezca en el título de las páginas web, y se usa mucho para encontrar listados de directorios. Por ejemplo: intitle:index of "Last modified"

También puedes usar allintitle:palabra_clave1 palabra_clave2 palabra_clave3… para encontrar resultados que tengan todos esos elementos o palabras clave en el título de la página.

Inurl:palabra_clave

Igual que Intitle y allintitle, Inurl y Allinurl sirven para buscar una o varias palabras clave presentes en la URL de las páginas web. Es un operador muy utilizado y puede sacar a la luz mucha información sensible, como ocurre con esta búsqueda: inurl:cgi-bin/etc/

Intext:palabra_clave / Allintext:palabra_clave1 palabra_clave2 palabra_clave3 …

Allintext e intext buscan palabras clave en el cuerpo de las páginas web o de los documentos y pueden ser muy útiles para encontrar cosas interesantes, como: allintext:"Control Panel" "login"

Site:dominio

La palabra clave site restringe los resultados a un sitio web concreto: al indicar el dominio, Google filtra los resultados y los limita al dominio o a la web que hayas elegido. Site:com, site:fr, site:gov… También puedes limitar la búsqueda a una web concreta: "reverse engineering site:infosecinstitute.com"

Cache:www.site.com

Una vez que Google indexa una web, es muy probable que la guarde en su caché, así que podemos recuperar información antigua aunque la web se haya actualizado o, en algunos casos, aunque ya no esté disponible:

Info:www.site.com

Esta búsqueda devuelve enlaces a páginas que contienen información sobre la web o la página en cuestión. Por ejemplo: info:infosecinstitute.com

Google no solo es bueno encontrando cosas: ¡hasta sabe hacer cálculos!

Hasta aquí, nada malo. Pero veremos que, si combinamos distintos operadores y palabras clave y sabemos exactamente qué queremos encontrar…, los resultados suelen superar nuestras expectativas, sobre todo cuando buscamos vulnerabilidades o datos «privados». Es lo que se conoce como Google hacking.

Según la definición de Wikipedia, el Google hacking consiste en usar operadores avanzados del buscador de Google para localizar cadenas de texto concretas en los resultados de búsqueda. Uno de los ejemplos más conocidos es encontrar versiones concretas de aplicaciones web vulnerables. Es normal que las instalaciones por defecto de las aplicaciones muestren la versión que ejecutan en todas las páginas que sirven, por ejemplo "Powered by XOOPS 2.2.3 Final", así que una búsqueda con ese texto localizaría todas las páginas web que lo contienen.

Encontrar nombres de usuario

Vamos a usar Google para encontrar archivos que contengan nombres de usuario, algo útil, por ejemplo, para crear diccionarios: allintext:username filetype:log. Aquí tienes un fragmento de un archivo de más de 2209 líneas:

Error Retrieving RSS File:
username:picklepeople
user_id:7321
rss:http://a*******l.org/feed
XML Processing Error: 4Empty document
username:inferno
user_id:240
rss:http://r*****o.l******n.com/rss/
XML Processing Error: 9Invalid character
username:rishey
user_id:338
rss:http://feeds.feedburner.com/____dio.xml

Y con la misma búsqueda encontré el registro de un ataque de inyección SQL:

2012-08-15 03:48:50 213.xxx.xx.229 cid http://www.h*****.at/index.php?option=com_yelp&controller=showdetail&task=showdetail&cid=-1+UNION+ALL+SELECT+1,2,3,concat(0×26,0×26,0×26,0×25,0×25,0×25,username,0x3a,password,0×25,0×25,0×25,0×26,0×26,0×26),5,6,7,8,9,10,11,12,13,14,15,16,17+FROM+jos_users– 2012-08-21 04:48:01 61.xxx.xxx.72 id http://www.h*****.at/index.php?option=com_recipes&Itemid=S@BUN&func=detail&id=-1/**/union/**/select/**/0,1,concat(username,0x3a,password),username,0x3a,5,6,7,8,9,10,11,12,0x3a,0x3a,0x3a,username,username,0x3a,0x3a,0x3a,21,0x3a/**/from/**/mos_users/*

Recopilar direcciones de correo electrónico

allintext:email OR mail +*gmail.com filetype:txt: con esta búsqueda me llevé una buena sorpresa, porque el primer resultado era un archivo de texto (por no hablar del interesantísimo servidor en el que estaba alojado) con 35.572 direcciones de correo electrónico y sus contraseñas.

Encontrar archivos y directorios sensibles

intitle:"index of" inurl:ftp (pub OR incoming)
intitle:"Index of" phpMyAdmin , intitle:index of inurl:config* intext:last modified
intitle:"index of" AND password OR passwd OR pwd intext:"last modified"

Todas estas búsquedas devuelven resultados interesantes; solo hay que saber qué queremos encontrar y cómo pedírselo a Google. Este es un ejemplo de lo que devuelve una de ellas:

define("MYSQL_HOST", "mysql106.db.******.***.jp");
define("MYSQL_ID" , "na***o-hoso");
define("MYSQL_PASS", "mJ******");
define("DBNAME", "na***o-hoso");

Encontrar mensajes de error (por ejemplo, para localizar webs vulnerables a la inyección SQL)

allintext:"Warning: mysql_connect(): Access denied for user: '*@*" "on line" -help -forum -tuto* inurl:"id=" & intext:"Warning: mysql_num_rows()" -help –forum


Con Google podemos encontrar casi todo lo que queramos si sabemos afinar bien la búsqueda. Me he divertido haciendo algunas consultas con distintas combinaciones de palabras clave y operadores; aquí abajo tienes algunos de los resultados:

Información completa de los clientes de algunas webs con sus nombres, direcciones, códigos postales, ciudades, teléfonos fijos y móviles, y direcciones de correo electrónico

Como ves, la cosa se pone seria. Y como seguramente ya habrás adivinado, ¡nadie escapa a las arañas y los rastreadores de Google! Google es, sin duda, un amigo de todos, también de quienes tienen malas intenciones. Por eso, antes de publicar un archivo, un directorio o cualquier otra información que no debería ser pública, acuérdate de comprobar el estado del acceso a tus archivos y carpetas sensibles.

Poner un archivo index.html vacío dentro de un directorio puede ser muy útil para evitar que se muestre el listado de su contenido. Piensa también en aplicar el CHMOD correcto a tus directorios sensibles y en limitar o eliminar el acceso a las copias de seguridad que subas.

El archivo Robots.txt también puede ayudarte a proteger la privacidad de tus datos: si lo rellenas correctamente, puedes impedir que Google o cualquier otro buscador indexe tu web, tus archivos o tus directorios.

Estos consejos te pueden ayudar:

Impedir que Google indexe tu web:

User-agent: Googlebot
Disallow: /

Impedir que cualquier buscador indexe tu web:

User-agent: *
Disallow: /

También puedes impedir que Google indexe un tipo de archivo concreto:

User-agent: Googlebot
Disallow: /*.sql$

Para impedir que Google indexe un directorio y todo su contenido:

User-agent: Googlebot
Disallow: /directoryName/

Para impedir que Google indexe una página concreta:

User-agent: Googlebot
Disallow: /confidential.html

fuente original: http://resources.infosecinstitute.com