# Google hacking

Le Google hacking est une technique consistant à utiliser un moteur de recherche, généralement Google, en vue de chercher des vulnérabilités ou de récupérer des données sensibles. Cette technique s'appuie sur les résultats de l'exploration et de l'indexation des sites web par le robot Googlebot. Elle est généralement utilisée par les hackers ou les crackers. Ainsi, en entrant des requêtes adéquates, il est possible d'accéder à des pages qui ne sont pas une partie du site web normalement accessible au public. Certains sites web contiennent des informations sensibles telles que le nom d'utilisateur, mot de passe et autres données confidentielles. Une affaire connue de Google hacking est le cas des mots de passe et noms d'utilisateurs pour l'accès au réseau Wi-Fi qui ont été exposés par des utilisateurs malveillants sur Google. Ces informations ont ensuite été utilisées pour accéder aux réseaux sans fil et voler des données confidentielles.

## Vocabulaire

Information leakage est une expression désignant une faille de sécurité mettant à disposition des informations qui devraient, par la nature de leur contenu, rester confidentielles.
Information leakage through search engines est une expression désignant une faille de sécurité permettant de retrouver, à partir d'un moteur de recherche, des informations qui ne devraient pas être disponibles.
Crawling est l'étape de traitement d'un moteur de recherche consistant à parcourir le World Wide Web en suivant des liens hypertextes à partir d'une page web.
Indexing est l'étape de traitement d'un moteur de recherche consistant à stocker les informations collectées lors de la phase de crawling et à les traiter pour que celles-ci soient retrouvées rapidement.
Robot est un programme informatique qui effectue automatiquement des tâches répétitives.
Googlebot est le robot d'exploration et d'indexation de Google.
Directory listing est une fonctionnalité d'un serveur web qui permet de lister le contenu d'un répertoire.

## Exemple de cas de Google hacking

En insérant le code suivant dans la barre de recherche de Google :
Il est possible de trouver des adresses URL pointant vers des pages web contenant le fichier /etc/passwd, un fichier système sous Linux listant les comptes des utilisateurs. Ce fichier contient généralement des informations sensibles, telles que les noms d'utilisateur et anciennement des données permettant de vérifier les mots de passe des comptes utilisateurs. Désormais, sur les systèmes modernes, les mots de passe sont hashés et stockés dans le fichier /etc/shadow.
Pour que cette technique fonctionne, il faut que l'index du répertoire /etc soit accessible publiquement et que le site ne soit pas exclu de l'indexation par Google. Même si de nombreux sites internet possèdent encore ce type de vulnérabilités, elles sont devenues de plus en plus difficiles à exploiter en raison de l'amélioration des mesures de sécurité et des algorithmes d'indexation de Google.

## Requêtes spéciales

Dans la pratique, le Google hacking se fait en entrant des requêtes spéciales dans le moteur de recherche, qui possède de nombreuses fonctionnalités souvent méconnues, parmi lesquelles :
* site:abc permet de chercher un site internet contenant le mot abc
* cache:abc.com ira chercher le site abc.com dans le cache de Google
* intext:abc permet de chercher une page web dont le texte contient le mot abc
* intitle:abc permet de chercher une page web dont le titre contient le mot abc
* inurl:abc permet de chercher une page web dont l'URL contient le mot abc
* inanchor:abc permet de chercher une page web avec une ancre contenant le mot abc
* filetype:docx abc permet de chercher un document Microsoft Word sur le thème de abc
* related:abc.com permet de chercher des sites connexes du site abc.com
* link:abc.com permet de chercher des sites liés au site abc.com
* daterange:{date de début}-{date de fin} permet de sélectionner uniquement les documents indexés par Google pendant une période donnée (spécificité, les dates doivent être des nombres entiers, au format jour Julien)
* allinurl:abc def permet de chercher une page web dont l'URL contient les mots abc et def (les mots doivent être séparés par un espace)
* allintitle:abc def permet de chercher une page web dont le titre contient les mots abc et def
* allinanchor:abc def permet de chercher une page web avec une ancre (hyperlien) contenant les mots abc et def
* allintext:abc def permet de chercher une page web dont le texte contient les mots abc et def
* info:abc.com permet d'afficher l'information connue par Google sur le site abc.com.
* link:fr.abc.com permet de chercher des pages pointant le site internet de abc en français
* inhoud:abc permet de chercher les pages contenant le mot abc
* site:nl abc permet de chercher les pages contenant le mot abc dans un site web néerlandais
* site:fr abc permet de chercher les pages contenant le mot abc dans un site web français
* site:br abc permet de chercher les pages contenant le mot abc dans un site web brésilien
* site:edu abc permet de chercher les pages contenant le mot abc dans un site web appartenant à une université ou école
* or permet de préciser l'une des possibilités, en excluant toutes les autres
* allintext:(abc OR def) permet de chercher les pages web contenant abc et def.

## Exemples

* Rechercher des fichiers sur le thème de la Sécurité au format PDF : filetype:pdf sécurité
* Rechercher des pages pointant le site internet de Wikipédia : link:fr.wikipedia.org
* Rechercher des serveurs web autorisant le directory listing : intitle:"index of /"
* Rechercher de répertoires précis (exemple admin) des serveurs web autorisant le directory listing : intitle:"index of /*admin*"
* Rechercher des pages contenant le mot de passe admin et située dans un site en français : inurl:password admin site:fr
* Rechercher des pages traitant d'informatique indexés par Google entre le 23 mai et le 6 juin 2010: informatique daterange:2455340-2455354
* Rechercher des pages contenant le mot passwd et située dans un site en néerlandais : inhoud:passwd site:nl
* Rechercher des pages contenant le mot password et située dans un site en français : inurl:password site:fr
* Rechercher une page dont l'URL contient les mots-clés admin, login, et user : allinurl:"admin login user"
* Rechercher une page dont le titre contient les mots-clés admin, login, et user : allintitle:"admin login user"
* Rechercher une page dont le texte contient les mots-clés "admin", "login", et "user" : allintext:"admin login user"

## Sécurité

Le Google hacking peut être utilisé à des fins malveillantes, telles que l'obtention d'informations confidentielles, l'accès à des données sensibles ou encore l'obtention de contrôle d'un système informatique.
Pour lutter contre le Google hacking, il convient d'éviter d'exposer des informations sensibles dans les métadonnées, de ne pas afficher des messages d'erreur contenant des informations sensibles et de désactiver l'indexation de certaines pages par Google (notamment celles contenant des informations confidentielles) en ajoutant le tag META noindex. Il consiste à insérer dans le code source HTML de la page à ne pas indexer la balise META suivante : <meta name="robots" content="noindex">
L'avantage du balisage META "noindex" est qu'il n'empêche pas le robot d'explorer le site, de détecter les liens et d'en suivre le contenu, ce qui est nécessaire pour l'indexation des pages. Ce balisage permet en effet de demander au robot de ne pas indexer la page, de ne pas suivre les liens contenus dans cette page et de ne pas afficher le contenu de cette page.
Aussi, il convient de vérifier régulièrement que les sites web ne contiennent pas d'informations sensibles. Pour cela, il est possible d'utiliser des outils comme par exemple :
* Google Hacking Database

### Cas particuliers

Précedemment, il a été évoqué quelques requêtes spéciales du moteur Google, parmi lesquelles intitle, allintext, et allinurl. En réalité, celles-ci permettent non seulement de rechercher les pages d'un site web, mais aussi les fichiers et les données des périphériques de stockage connectée au réseau local et connectée à un compte Google Drive. Afin d'éviter que des données sensibles soient indexées et affichées dans les résultats de recherche de Google, il est possible de renommer ces fichiers et les dossiers en changeant l'extension du fichier et en modifiant leur nom (par exemple, en ajoutant des espaces ou des caractères spéciaux).
Autre technique qui permet d'éviter d'indexer des données sensibles est l'activation de la fonction de sauvegarde automatiques d'un compte de messagerie Gmail, qui s'effectue par l'ajout de la balise META suivante dans le code source HTML de la page web : <meta name="robots" content="nofollow,noindex"> Cela permet de demander au robot de ne pas suivre les liens contenus dans la page web et de ne pas indexer cette page.
Cependant, il ne faut pas confondre le META noindex avec le META robot. La fonction robot possède différentes valeurs qui permettent de bloquer l'indexation, mais aussi de bloquer le suivi des liens, comme noarchive, nosnippet, nocache, noodp, noydir'".
Ces valeurs s'ajoutent à la balise META robot et sont codées sous la forme <meta name="robots" content="nonindex, nofollow"> pour indiquer les paramètres demandés.

#### Exemples de sécurité

* Exclure l'indexation des données sensibles en ajoutant la balise META suivante dans le code HTML des pages sensibles :
<meta name="robots" content="noindex">
* Bloquer le suivi des liens et l'indexation des pages web en ajoutant la balise META suivante dans le code HTML des pages sensibles :
<meta name="robots" content="noindex, nofollow">
* Interdire la sauvegarde automatique d'un compte Gmail en ajoutant la balise META suivante dans le code HTML des pages sensibles :
<meta name="robots" content="noindex, nofollow, noarchive, nosnippet, nocache, noodp, noydir">
Ces valeurs permettent de sécuriser les pages web. Cependant, il est important de vérifier les données sensibles et d'évaluer leur niveau de protection et de sécurité. En cas de doute, il est conseillé de demander l'avis d'un spécialiste en informatique ou d'un expert en sécurité informatique.