Il Pesa-Nervi

«Lei parla a vanvera, giovanotto!
No, penso a dei critici con la barba».

Google hacking

I trucchi per usare al meglio il miglior motore di ricerca attualmente disponibile e per scoprire le eventuali vulnerabilità dei propri (e altrui) siti Web, messe a nudo dall'indicizzazione di Google.

Introduzione

All'inizio il Web non era altro che un piccolo insieme di pochi computer collegati fra di loro, e reperire le informazioni era una pratica estremamente semplice. Con l'espandersi della Rete e col moltiplicarsi delle pagine a ritmo vertiginoso, tale pratica cominciò a rivelarsi sempre più ardua col passare del tempo, fino a divenire decisamente ostica. Ed è a questo punto della naturale evoluzione del Web che si inseriscono i motori di ricerca.

L'idea che ne è alla base è straordinariamente semplice: tramite l'inserimento di alcune parole chiave, è possibile reperire informazioni sui dati inseriti tramite l'algoritmo di ricerca dei motori, che scandagliano le pagine Web che rispondono ai requisiti indicati dalla ricerca dell'utente. In questo modo l'utente non deve necessariamente conoscere l'URL esatto che gli interessa, ma ha la possibilità di scegliere fra i risultati ottenuti quello che più si avvicina alle sue esigenze.

Il successo di Google

[Il logo di Google]Esistono molti motori di ricerca, ma Google attualmente è quello più famoso ed usato al mondo, con oltre 8 miliardi di pagine indicizzate. Il successo di Google si spiega con l'apparente semplicità di utilizzo che lo contraddistingue, e il sempre maggior numero di servizi che offre all'utente (ricerca di immagini, news, gruppi di discussione, immagini satellitari, mappe planetarie e molto altro ancora). Sembra sufficiente inserire il termine richiesto nel suo scarno ed essenziale modulo di ricerca per essere catapultati in un attimo sui siti di tutto il mondo. Google ha dalla sua anche un'estrema velocità di scansione delle pagine, grazie alle quale l'utente ha subito i risultati che gli occorrono. Google riporta nelle pagine dei risultati i link ai siti che contengono il termine richiesto, offrendo nel contempo la possibilità di eseguire la ricerca anche su siti correlati o nella sua cache, qualora le pagine non fossero più disponibili online. Offre altresì la possibilità di visualizzare le pagine in formati diversi, ad esempio permettendo all'utente di scegliere fra un file PDF ed uno HTML, cosa molto utile per coloro che non dispongono di una connessione ADSL ed hanno bisogno di abbreviare i tempi di download.

Precisazione

A questo punto del nostro discorso occorre fare una precisazione: da quanto emerso finora sembrerebbe che Google non sia altro che un bibliotecario che ordina meticolosamente i dati di un'immensa biblioteca, che nell'immaginario collettivo sarebbe rappresentata dal Web. Errato: Google non è un bibliotecario ed il Web non è una biblioteca, per il semplice fatto che il Web non è ordinato secondo i parametri che siamo soliti applicare ad una collezione di sapere. Google non ordina le pagine secondo una "scaffalatura virtuale", ma si limita a riportarle nelle sue ricerche secondo una gerarchia che viene stabilita da parametri che spesso non dipendono solo da lui. Infatti il page-ranking, meglio noto come posizionamento all'interno del motore di ricerca nei risultati ottenuti per ogni singola voce cercata, dipende in parte dai criteri di Google, ma in parte anche (e spesso soprattutto) da chi scrive il codice della pagina Web. Se infatti questa pagina viene scritta con un codice standard, che rispetta quanto stabilito dal World Wide Web Consortium (W3C), ovvero in XHTML e CSS, e se questo codice è corretto e valido, Google tenderà a preferire tale pagina rispetto ad altre che presentano un codice fuori standard ed errato (semanticamente e sintatticamente). Dunque sono da aborrire le soluzioni fatte a colpi di tabelle e di tag proprietari (come <marquee>), e l'uso improprio dei tag <meta>. Viceversa un uso corretto di tali tag facilita l'indicizzazione di Google e il miglioramento del page-ranking. Un esempio è quello del sito della parrocchia dell'Incoronata di Vasto, che nel giro di due mesi è passato dalla terza alla prima pagina dei risultati di Google per "Incoronata", pur non essendo riportato fra i link di altri siti.

Operatori e parole chiave

Google ha una sua sintassi con delle regole precise. Tale sintassi permette di sfruttare al meglio le query. Tuttavia anche la scelta di parole chiave deve essere mirata ed il meno generica possibile. Google ha un singolare comportamento con le parole chiave: se infatti queste vengono ripetute più volte, il risultato della query cambia, e si hanno molti più risultati rispetto al singolo inserimento. Di seguito riporterò gli operatori di ricerca più comuni.

Altri operatori e metacaratteri

Accanto agli operatori principali, troviamo altri operatori con cui approfondire le nostre query. Vi sono innanzitutto gli operatori booleani (AND, OR, NOT) che possono essere usati in combinazione con gli operatori principali. Esempio:

intitle:index.of "parent directory" images OR image

(Trattasi questo di esempio complesso che capiremo meglio più avanti.)

perl (site:edu | site:com)

(Qui ho raggruppato i membri dell'espressione logica tramite parentesi.)

Altri operatori sono gli operatori di inclusione ed esclusione (+ e -), con i quali includiamo o escludiamo dalla nostra ricerca una determinata espressione o combinazione di espressioni. Esempio:

windows -site:microsoft.com

(Cerco informazioni, ahimè, su Windows ma ho deciso di escludere dalla ricerca il sito della Microsoft.)

Un altro operatore, spesso sottovalutato, è rappresentato dalle virgolette, che spesso Google ci consiglia di omettere al fine di ottenere maggiori risultati. Questo perché si tratta di un operatore di specificità, che impone a Google di trovare proprio quella espressione ed in quella successione. Esempio:

"google hacking" -site:it

(Cerco delle info su quest'espressione ma ho deciso di snobbare i siti italiani.)

Infine vengono i metacaratteri, o nel caso di Google il metacarattere asterisco (*), che sostituisce una parola completa (due asterischi sostituiranno due parole e così via). Utile quando non conosciamo una frase precisa ma solo parti di essa. Esempio:

"three * mice"

(Consente di trovare "three blind mice", "three blue mice", "three green mice", eccetera.)

Combinare operatori e parole chiave

Un buon metodo per ottenere il maggior numero di risultati possibili in una ricerca è quello di combinare gli operatori con le parole chiave. Si dovrebbero usare come parole chiave termini che caratterizzino in modo sufficiente l'argomento ricercato e non riguardino molti altri argomenti. Tornando all'esempio lasciato in sospeso:

intitle:index.of "parent directory" images OR image

notiamo che qui sono state usate due espressioni chiave ben precise:

le quali si riferiscono alla terminologia con cui sui server si denominano le directory genitrici, che spesso, per motivi vari o semplicemente per distrazione, vengono lasciate scoperte e quindi facilmente rintracciabili tramite Google. Il fatto è che Google, se non viene espressamente richiesto il contrario, indicizza l'intero sito, con tutte le directory annesse e connesse. Altre parole chiave di uso corrente che risultano particolarmente utili sono ad esempio:

Per cercare fra i blog scriveremo invece:

Come si evince chiaramente da quanto riportato sopra, abbiamo una gamma vastissima di combinazioni possibili. Il limite è solo la nostra fantasia e soprattutto la nostra capacità di andare a cercare nei siti quelle parole che li accomunano. Per esempio, avrei bisogno di cercare del buon codice XHTML e CSS con cui sviluppare il mio sito e necessito di esempi pratici. Sapendo che spesso (ma non sempre), le parole che li accomunano sono "valid xhtml 1.1" e "valid css" (le famose iconcine del W3C, spesso usate anche dove la validazione dice il contrario), scriverò:

E così via. Ma ora ci siamo addentrati in quel punto di confine che separa la semplice ricerca da qualcosa di più. Ora è tempo di parlare dell'hacking di Google.

Hacking

Se per hacking intendiamo un uso diverso della tecnologia alla quale ci riferiamo, quanto detto sinora è in perfetto spirito hacker. L'hacker è colui al quale piace esplorare i dettagli di una tecnologia, a differenza degli utenti comuni che si accontentano del minimo necessario. Google è una tecnologia che offre molto a chi sa cercare. Ma come in tutte le ricerche, c'è una via normale ed una via oscura. La via normale è quella che ho deciso di illustrare in questo breve scritto, quella che passa dalla API di Google e rispetta i criteri d'uso del motore di ricerca; l'altra, quella oscura, è rappresentata dal non usare la API di Google, cercando direttamente nel contenuto delle pagine tramite script creati appositamente. Tale via prende il nome di scraping, che viola i termini d'uso di Google e, se portata al limite, comporta il blocco dell'IP da parte di Google. Ora vedremo in breve le due vie. In seguito sarete voi a decidere.

La prima via: il vero Google hacking

http://johnny.ihackstuff.com/ è l'URL del sito nel quale si trova il Google Hacking Database, un'enciclopedica raccolta di stringhe di ricerca di Google del tutto simili a quelle viste in precedenza, con un'unica, fondamentale differenza: queste stringhe permettono di mettere in luce bug dei siti o dei forum di tali siti, di trovare password e username, chiavi di ingresso a canali IRC, di testare vulnerabilità e molto altro ancora, fermo restando che lo scopo è quello di segnalare e di porre rimedio a tutti questi bug. Google come strumento di ricerca e di protezione, dunque, e non come strumento di offesa. Ora vedremo alcune stringhe particolari e le commenteremo assieme:

Directory scoperte

intitle:index.of "parent directory"

Come già detto in precedenza, se non si pongono limiti a Google il risultato sarà quello di vedere il nostro sito completamente scoperto dalla prima all'ultima directory. Una buona regola è quella di reindirizzare la navigazione verso la home page del sito o, in alternativa, porre una password apposita.

intitle:index.of "parent directory" images OR image

Stesso discorso del precedente esempio, con l'aggiunta di una directory specifica.

"index of /backup"
index of /css

In questo caso vengono colpite altre due directory sensibilissime, col rischio di vedere barbaramente copiati i nostri layouts o altri file riservati. Una buona protezione consiste nell'agire direttamente sul file robots.txt:

User-Agent: Googlebot
Disallow: /backup
Disallow: /css

Password e username

filetype:htpasswd htpasswd
Intitle:index of passwd passwd.bak

Ecco due tipi di file che gli utenti Unix/Linux conoscono molto bene. Questi due hack forniscono l'elenco di siti che hanno lasciato scoperti questi due tipi di file. Per porre rimedio occorre andare ancora una volta sul file robots.txt ed aggiungere ad esempio una stringa come:

User-Agent: Googlebot
Disallow: /*.bak$

Con la stringa di sopra impediamo a Google di indicizzare una determinata estensione di file, come nel primo caso avevamo impedito l'indicizzazione delle directory specificate. Ancora:

filetype:dat "password.dat"
filetype:log inurl:"password.log"

Qui si ricercano informazioni riservate di sistema. Cambiando le estensioni o specificando un dominio particolare è possibile andare incontro ad alcune "gradite" sorprese.

Chiavi di ingresso ai canali IRC

sets mode: +k

Questa query viene usata per cercare all'interno dei file di log le password di protezione dei canali IRC. L'attributo +k indica la modalità dei canali di chat che avvisa l'utente della restrizione delle impostazioni. Qui meglio di altrove ci si rende conto dell'importanza fondamentale della scelta della parole chiave e del bisogno che questi file di log siano opportunamente protetti.

Documenti

filetype:xls username password
filetype:xls private OR reserved
filetype:doc site:mil +classified

Il formato di questi file risulterà certamente più familiare agli utenti Windows. Nell'ultimo caso è presente quella restrizione di campo in un dominio specifico di cui parlavo poc'anzi. Vale sempre la regola della protezione mediante password e della modifica del file robots.txt.

Applicazioni vulnerabili in PHP

allinurl:install/install.php
"There are no Administrators Accounts" inurl:admin.php - mysql_fetch-row

La prima query restituisce tutti quei siti in cui i webmaster hanno dimenticato un file di installazione fra le loro pagine, chiamato in genere install.php o config.php. Da tutto ciò consegue che spesso è una pratica assai semplice quella di cambiare le proprietà del sito, come i dati di login. La seconda vale per quei webmaster che non hanno provveduto a creare un account di administrator dopo aver installato PHPNuke. Per difendersi è buona norma tenersi informati delle debolezze delle proprie applicazioni di sviluppo su siti appositi, come http://www.secunia.com/, scaricando all'occorrenza tutte le patch del caso.

Con queste ultime due query ci siamo (ahimè) avvicinati al "lato oscuro" di Google. Passiamo dunque a trattare di tale rovescio della medaglia, fermo restando il fatto che se si è in cerca di nuove stringhe si può sempre tornare sul sito http://johnny.ihackstuff.com/. Buona ricerca!

La seconda via: lo scraping e Santy

Il 21 dicembre 2004 il worm Santy fece la sua comparsa in Internet, attaccando migliaia di siti Web e "defacciandoli" con la scritta rossa su sfondo nero:

This site is defaced!
NeverEverNoSanity WebWorm generation.

La particolarità di questo worm è che faceva uso di un hack di Google per rintracciare quei siti che erano affetti da una particolare vulnerabilità della piattaforma PHP Bulletin Board (phpBB), interrogando Google in modo automatico ed utilizzando quindi quella particolare tecnica di ricerca meglio nota come scraping, ovverosia una ricerca che non fa uso della API di Google ma che si riallaccia direttamente al codice delle pagine, violando i termini d'uso del motore di ricerca, come abbiamo già avuto modo di vedere in precedenza. Google da allora ha deciso di rispondere all'hacking in maniera perentoria, rispondendo a volte con pagine come questa:

We're sorry...

...but we can't process your request right now. A computer virus or spyware application is sending us automated request, and it appears that your computer or network has been infected. (...)

Qual era l'hack in questione? Si può risalire ad esso analizzando direttamente il codice sorgente di Santy, usando l'hack filetype:pl "Santy worm" per cercarlo sul Web (nel momento in cui scrivo è reperibile unicamente nella cache di Google):

Sub GoGoogle() {
my @urls;
my @ts = qw/t p topic/;
my $startURL = 'http://www.google.com/search?num=100&lr=&as_qdr=all' . '&q=allinurl%3°+%22viewtopic.php%22+%22'. (...)

L'hack allinurl:viewtopic.php, come abbiamo visto, delimita la ricerca delle parole solo all'interno dell'URL del sito, indirizzando il worm verso l'obiettivo specifico, quello appunto del forum phpBB. Lo scraping in questione viene fatto utilizzando un semplice script in Perl. Esempi di tali script possono essere rintracciati sul libro Google. Trucchi e segreti per hacker di Tali Calishain e Rael Dornfest, edito in Italia da HOPS - Tecniche Nuove. Tuttavia è da notare che la maggior parte degli script presenti su tale volume fa uso della API di Google, per la quale è necessario essere in possesso di una regolare chiave per sviluppatori di Google, rilasciata in modo assolutamente gratuito. Con tale chiave è possibile effettuare quotidianamente un numero massimo di 1000 query. Oltre tale numero scatta automaticamente il blocco imposto da Google, oltre il quale si entra nel campo dell'abuso degli strumenti in questione. Esistono diversi programmi disponibili sul Web per eseguire (in modo legale o no) query automatizzate. Fra tutti citerò quello di Johnny Long, autore del Google Hacking Database e massimo esperto in materia di Google hacking. Il software si chiama Gooscan (per Linux), è gratuito, ed esegue hack scelti dall'utente che possono essere salvati e successivamente analizzati. Il software può incorporare il Google Hacking Database.

Conclusioni

In realtà questa non è una conclusione ma un inizio, l'inizio di una ricerca nei meandri della Rete al fine di aumentare le nostre conoscenze in materia di sicurezza. Molti sottovalutano il Google hacking perché lo considerano roba da ragazzini, e preferiscono concentrarsi su problemi più "elevati", quali lo studio dei protocolli e delle vulnerabilità annesse e connesse. Ma se pensiamo che con Google possiamo testare direttamente queste vulnerabilità, o più praticamente possiamo verificare se il sito che abbiamo tanto faticosamente costruito regge all'urto di un hack di Google, allora tutto il discorso sulle priorità della sicurezza va riformulato. Il worm Santy è la dimostrazione che il Google hacking può costituire una fonte di serio pericolo, qualora esso venisse utilizzato per loschi fini. La speranza di questo scritto sta nella possibilità di aver condiviso con voi la bellezza della ricerca e l'amore per il Web, che oggi come ieri affratella e unisce le persone di tutto il mondo.

Commenti dei lettori

  1. Commento di Old Jacques - 8/11/2005 ore 22,50

    Per quanto suggerito di intervenire su robots.txt per evitare l'indicizzazione di alcuni files o directory, credo che possa dare un senso falso di sicurezza.

    In questo caso, sarebbe sempre meglio, secondo me, agire ubicando i files "delicati" in questione fuori della "gerarchia web" (cio'e' le pagine visitabili e dunque indicizzabili) per evitare che possono essere raggiunti nemmeno dalla richiesta specifica (perché per uno Hacker, scrivere uno spider che ignori le specifiche del robots.txt, se pure "scorretto" da un punto di vista etico, non sarebbe difficile da un punto di vista tecnico), oppure usando le istruzioni di accesso (.htaccess o permessi IIS) per permettere l'accesso solamente agli altri scripts (non applicabile, ovviamente per i CSS, ma per le password sicuramente sì).
  2. Commento di Baldo - 8/11/2005 ore 23,08

    Si investe tanto in sicurezza e poi l'errore piu' diffuso e' lasciare password di default (per gli opensource) oppure utilizzare password facilmente rintracciabili.
  3. Commento di Gabriele Romanato - 10/11/2005 ore 18,12

    Il problema è che queste directory non dovrebbero essere indicizzate, e qui sta all'accortezza del singolo riuscire a capirlo. Comunque è anche possibile usare una password, che blocca il Google hacking sul nascere. Scrivere uno spider è utile, ma uno spider si limita a leggere il contenuto del sito e non può verificare se tale sito è esposto a questa o quella vulnerabilità. Più che di spider ci si serve di script (per lo più in Perl)che fanno scraping in cerca di vulnerabilità. Il Google hacking serve solo a scoprire vulnerabilità. Lo sfruttare le vulnerabilità è compito dell'attacker. ciao :)
  4. Commento di Gabriele Romanato - 5/12/2005 ore 10,13

    Annuncio a tutti i lettori del Pesanervi che sto ultimando la traduzione della "Google's hackers guide" di Johnny Long. Presto on line!
  5. Commento di Luc@web - 7/12/2005 ore 21,38

    Iniziano già le sommosse contro google....ho visto già i primi banner contro google....se i webmaster gli andranno contro google non sarà più il primo motore al mondo.... anche aol adesso chiuderà con google per passare con msn...
  6. Commento di Gabriele Romanato - 8/12/2005 ore 17,49

    Non credo. Google ha dalla sua la semplicità d'utilizzo, la rispondenza fra termine e risultato trovato, gli operatori estesi e molto altro ancora. Senza contare Gmail, GoogleTalk e molto altro. MSN search ha invece una sintassi degli operatori troppo restrittiva, non riconosce formati di file che non siano quelli tipici di MS ecc. quindi non penso proprio che succeda niente di serio. ciao :-)
  7. Commento di nourdine - 6/12/2006 ore 14,56

    Ma a me sembra che sia più che altro un problema relativo alle impostazioni dei webserver in cui i siti sono alloggiati ed interpretati. Insomma se gli amministratori si dimenticano di impostare apache in modo che non permetta la visione dei contenuti delle cartelle non è mica colpa di google. Nei casi in cui ci sia una confighurazione insicura di Apache, è il server stesso a generare un documento html (che google leggerà è indicizzerà) descrivente il contenuto della cartella prescelta. Se apache è configurato sicuro si ottiene invece un bel "Errore HTTP 403 - Accesso negato" e l'utente (umano o spider che sia) resta a bocca asciutta e non legge (o indicizza) un bel niente. Mi sbaglio? Forse sono un pò in ritardo per i commenti!?!?
  8. Commento di frank dela valle - 18/9/2007 ore 1,29

    cosa posso dire dell'articolo??
    niente di particolare se non un piccolo grazie per aver riempito le mie scenzE con "LA CONOSCENZA"
    PUO SEMBRARE UN'ESAGERAZIONE MA SE DEVO LA MIA PROMOZIONE ed il riconoscimento delle mie piccolissime "qualità" le devo soprattutto all'aver seguito passo dopo passo le istruzioni dell'articolo ed aver compreso "la bellezza della ricerca "
    GRAZIE
    Frank

Articolo di Gabriele Romanato pubblicato il  8/11/2005 alle ore 20,02.

Indice del Pesa-Nervi | Diodati.org

Inizio pagina.