Google hacking; Trucchi su ricerche e come scoprire vulnerabilità sia dei propri siti e altrui

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

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.

  • intitle: Trova le pagine contenenti nel proprio titolo la parola chiave specificata. Esempio: intitle:xhtml
    (Nota bene: non devono esservi spazi fra i due punti e la parola chiave specificata. Google non è case-sensitive, quindi è indifferente rispettare le maiuscole e le minuscole.)
  • allintitle: Restituisce le pagine che contengono nel titolo tutte le parole specificate. Esempio: allintitle:xhtml tutorials
  • inurl: Limita i risultati alle pagine contenenti una determinata parola nell’URL. Esempio: inurl:css
  • allinurl: Limita i risultati alle pagine contenenti tutte le parole specificate nel proprio URL. Esempio: allinurl:css design
  • intext: Restituisce le pagine che contengono nel testo la parola chiave specificata. Esempio: intext:blog
  • allintext: Limita i risultati alla pagine che contengono nel testo tutte le parole specificate. Esempio: allintext:eric meyer
  • link: Ricerca le pagine Web che contengono collegamenti al link specificato. Esempio: link:www.html.it
  • inanchor: Ricerca negli anchor dei link presenti nelle pagine. Esempio: inanchor:linux
  • site: Restringe la ricerca ad un sito o ad un dominio di livello superiore. Esempi: site:com o site:it o site:www.redhat.com
  • cache: Trova una copia della pagina che Google ha indicizzato nella propria cache. Utile quando le pagine non sono più online. Esempio: cache:www.nomesito/nomepagina.htm
  • filetype: o ext: Limita i risultati ad un documento avente una determinata estensione di file (.doc, .pdf, .rtf, .pl, .sh, .xls, eccetera). Esempio: filetype:pl
  • define: Fornisce la descrizione di un termine ed i link ad esso correlati. Esempio: define:worm
  • related: Cerca pagine simili o affini alla pagina specificata. Esempio: related:www.html.it
  • info: Si ottengono ulteriori informazioni e link su un URL specificato. Fondamentale per tale descrizione è l’uso accorto dei metatag. Esempio: info:www.w3.org

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:

  • index of
  • parent directory

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:

  • "what's new"
  • "what's cool"
  • directory
  • categories

Per cercare fra i blog scriveremo invece:

  • "powered by blogger"
  • "powered by bloxom"
  • "powered by greymatter"
  • "a manila site"
  • site:livejournal.com
  • site:blogspot.com
  • intitle:"radio weblog"
  • site:radio.weblogs.com

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

  • "valid xhtml 1.1" site:edu
  • "valid css" site:edu
  • intext:"valid xhtml 1.1" site:it
  • intext:"valid css" site:com

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.

 

Fonte originale: http://pesanervi.diodati.org/pn/index.asp?a=189

 

Questa voce è stata pubblicata in Trucchi e Consigli per il Pc. Contrassegna il permalink.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...