Google hacking e dork: gli operatori di ricerca nascosti di Google

Google hacking e dork: gli operatori di ricerca nascosti di Google

Non serve presentarlo: Google è con ogni probabilità il motore di ricerca più potente in circolazione, tanto che a volte lo usiamo perfino per controllare se la connessione funziona. Il fatto è che la potenza di quella semplice barra di ricerca in cima alla pagina è diventata motivo di preoccupazione per molti; e chi non si preoccupa dovrebbe farlo, come vedremo tra poco!

Questo elenco, non esaustivo, di soluzioni potrebbe aiutarti a proteggerti dai motori di ricerca e in particolare da Google, ma devi fare molta attenzione a come gestisci il modo in cui Googlebot (o il crawler di qualsiasi altro motore di ricerca) vede il tuo sito, per non ritrovarti con le tue pagine completamente sparite dai risultati di ricerca!

Devi sapere che le ricerche su Google non distinguono tra maiuscole e minuscole: non c’è alcuna differenza tra minuscole, maiuscole o un mix delle due, e Security, SECURITY e SeCuriTY restituiscono esattamente gli stessi risultati. C’è però un’eccezione a questa regola: gli operatori logici.

Operatori logici e simboli

Google riconosce tre operatori logici: AND, NOT e OR. Per questo interpreta "OR" come operatore, mentre "Or", "oR" o "or" vengono trattati come semplici termini di ricerca o parole chiave.

L’operatore AND serve a includere più parole chiave in un’unica ricerca e può essere sostituito da un semplice spazio " ", anche se i risultati cambiano leggermente tra le due forme: puoi verificarlo cercando, per esempio, "reverse AND engineering AND tutorials" e "reverse engineering tutorials".

L’operatore NOT è utilissimo per escludere alcune parole chiave dai risultati di una ricerca ed equivale al segno "-" (meno) attaccato a una parola chiave. Per capire come funziona, prova a cercare "email service" e poi "email service -marketing" (nota che tra "-" e "marketing" non c’è nessuno spazio).

L’operatore OR serve a includere nei risultati una parola chiave oppure un’altra, ma non entrambe, ed equivale al simbolo "|": per esempio, per Google "reverse OR engineering" significa esattamente "reverse|engineering" (provalo, poi prova "reverse engineering" e guarda la differenza).

Oltre a questi operatori, Google riconosce alcuni simboli come ~, +, * e ""

Usare la tilde "~"

Questo piccolo carattere serve a includere nei risultati la parola chiave desiderata, i suoi sinonimi e i termini simili. Per esempio, se cerchi "it security ~tools" otterrai risultati più ricchi rispetto a "it security tools", perché Google prenderà in considerazione anche termini come "Software" e li mostrerà tra i risultati.

Usare il segno più "+"

Google tende a ignorare la punteggiatura e a eliminare le parole brevi come "we", "the", "to" e "of"… Mettendo il segno più davanti a una parola, dici a Google di includerla nella ricerca: in questo modo, per esempio, i risultati di "security is never complete" saranno sicuramente diversi da quelli di "security +is never complete".

Usare le virgolette "" (ricerca di una frase esatta)

Se sei sicuro di aver scritto una parola correttamente ma Google continua a suggerirti correzioni ortografiche, oppure se vuoi cercare una frase, una citazione o un messaggio di errore…, racchiudere la ricerca tra virgolette ti darà risultati più pertinenti: prova per esempio a cercare "Debugging DLLs" con e senza virgolette.

Usare l’asterisco "*", detto anche wildcard o jolly

Il carattere jolly è utilissimo quando vuoi cercare qualcosa ma ti mancano una o più parole (di solito si usa insieme alla ricerca di una frase esatta). Per esempio, se vuoi trovare il titolo del film "Get the Gringo" ma ricordi solo "Get The", puoi provare con "Get The * movie"; prova anche "the art of *" hacking book.

Ora che sappiamo qualcosa in più su come la barra di ricerca di Google interpreta ciò che scriviamo, vediamo altri operatori e parole chiave più interessanti, soprattutto quando si parla di sicurezza!

Define:parola

Questa ricerca restituisce la definizione della parola indicata, presa dalle fonti (siti web) più affidabili. Define:Security

Filetype:estensione_file

Con Filetype puoi trovare file con un’estensione specifica, cioè limitare la ricerca a un determinato tipo di file. Nota che tra filetype: e la parola che segue non c’è nessuno spazio; per esempio, possiamo cercare backup di database con "backup filetype:sql".

Ext :estensione_file

Questo operatore ha più o meno la stessa funzione di quello appena visto (filetype), con la differenza che usare "ext" per cercare estensioni poco comuni (come dmp, ks, key…) restituisce risultati più approfonditi e precisi.

Intitle:parola_chiave

Questo operatore ti permette di cercare una singola parola o un’intera frase presente nel titolo delle pagine web, ed è molto usato per trovare gli elenchi di directory (directory listing). Per esempio: intitle:index of "Last modified"

Puoi usare anche allintitle:parola1 parola2 parola3… per trovare i risultati che contengono tutti questi elementi o parole chiave nel titolo della pagina.

Inurl :parola_chiave

Come Intitle e allintitle, anche Inurl e Allinurl servono a trovare una o più parole chiave presenti negli URL delle pagine web. È un operatore molto usato che può restituire parecchie informazioni sensibili, come nel caso di questa ricerca: inurl:cgi-bin/etc/

Intext :parola_chiave / Allintext :parola1 parola2 parola3…

Allintext e intext cercano le parole chiave presenti nel corpo delle pagine web o dei documenti e possono essere molto utili per scovare cose interessanti, come: allintext:"Control Panel" "login"

Site:dominio

La parola chiave site limita i risultati a un sito specifico: indicando il dominio, Google filtra i risultati restringendoli al dominio o al sito scelto. Site:com, site:fr , site:gov… oppure puoi limitare la ricerca a un sito preciso: "reverse engineering site:infosecinstitute.com"

Cache :www.site.com

Una volta che un sito è stato indicizzato da Google, è molto probabile che resti nella cache di Google: così possiamo recuperare vecchie informazioni anche dopo che il sito è stato aggiornato o, in certi casi, anche quando non è più online:

Info :www .site.com

Questa ricerca restituisce i link alle pagine che contengono informazioni sul sito o sulla pagina web in questione. Per esempio info:infosecinstitute.com

Google non è bravo solo a trovare le cose: sa anche fare i calcoli!

Fin qui niente di male, ma vedremo che combinando tra loro diversi operatori e diverse parole chiave, e sapendo esattamente cosa vogliamo trovare…, i risultati spesso superano le aspettative, soprattutto quando si cercano vulnerabilità o dati "privati". È quello che per convenzione si chiama Google Hacking.

Secondo la definizione di Wikipedia, il Google hacking consiste nell’usare gli operatori avanzati del motore di ricerca Google per individuare specifiche stringhe di testo all’interno dei risultati di ricerca. Tra gli esempi più diffusi c’è la ricerca di versioni specifiche di applicazioni web vulnerabili. La ricerca seguente individuerebbe tutte le pagine web che contengono quel testo preciso. È normale che le installazioni predefinite delle applicazioni riportino la versione in uso in ogni pagina che servono, per esempio "Powered by XOOPS 2.2.3 Final".

Trovare nomi utente

Useremo Google per trovare file che contengono nomi utente, utili per esempio per costruire dizionari. allintext:username filetype:log . Ecco un estratto di un file di oltre 2.209 righe:

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

E con la stessa ricerca ho trovato il log di un attacco SQL injection:

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

Raccogliere indirizzi email

allintext:email OR mail +*gmail.com filetype:txt: con questa ricerca sono rimasto davvero sorpreso, perché il primo risultato era un file di testo (per non parlare dell’host, molto interessante, su cui si trovava) con 35.572 indirizzi email e relative password.

Trovare file e directory sensibili

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"

Tutte queste ricerche restituiscono risultati interessanti: basta sapere cosa vogliamo trovare e come chiedere a Google di cercarlo. Ecco un esempio di risultato restituito da una di queste ricerche:

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

Trovare messaggi di errore (per esempio, siti vulnerabili alla SQL injection)

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


Con Google possiamo trovare quasi tutto quello che vogliamo, se sappiamo affinare abbastanza le nostre ricerche. Mi sono divertito a fare diverse ricerche combinando parole chiave diverse con operatori diversi; ecco alcuni dei risultati:

Informazioni complete sui clienti di alcuni siti web con nomi, indirizzi, codici postali, città, telefoni fissi, cellulari e indirizzi email

Come vedi, le cose si fanno più serie. Come avrai intuito, nessuno sfugge agli spider e ai crawler con cui Google indicizza il web! Google è senz’altro un amico di tutti, malintenzionati compresi: prima di pubblicare un file, una directory o qualsiasi altra informazione che non dovrebbe essere pubblica, ricordati di controllare come sono impostati gli accessi ai tuoi file e alle tue cartelle sensibili.

Mettere un file index.html vuoto in una directory può essere molto utile per eliminare il semplice elenco dei file (directory listing); pensa anche ad applicare i CHMOD corretti alle directory sensibili e a limitare o eliminare l’accesso ai backup che hai caricato.

Anche il file Robots.txt può aiutarti a proteggere la riservatezza dei tuoi dati: compilandolo correttamente puoi impedire a Google, o a qualsiasi altro motore di ricerca, di indicizzare il tuo sito, i tuoi file o le tue directory.

Questi consigli possono esserti utili:

Impedire a Google di indicizzare il tuo sito:

User-agent: Googlebot
Disallow: /

Impedire a tutti i motori di ricerca di indicizzare il tuo sito:

User-agent: *
Disallow: /

Puoi anche impedire a Google di indicizzare un tipo di file specifico:

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

Per impedire a Google di indicizzare una directory e tutto il suo contenuto:

User-agent: Googlebot
Disallow: /directoryName/

Per impedire a Google di indicizzare una pagina specifica:

User-agent: Googlebot
Disallow: /confidential.html

fonte originale: http://resources.infosecinstitute.com