THMag 01/Google Hacking
Un article de HackaWiki.
Sommaire
|
Google Hacking : techniques de base et protections
Google continue a prendre toujours plus d'importance sur le Net. Cette rubrique a été crée pour informer des possibilités qu'offre les technologies déployées par cette société, et pour sensibiliser aux risques qu'elles impliquent. Dans ce premier article, nous montrons quelques techniques de recherche étonnantes, que tout le monde ne connaît pas encore.
Newbie
By Snoop_Psykoman
En un an seulement la société Google est devenue la 83eme plus importante en valeur boursière dans le monde. Cette expansion fulgurante est due à son moteur de recherche bien connu de tous, mais aussi de divers services proposés à coté. Mais Google c'est, pour la plupart des gens, d'abord un moteur de recherche extrêmement puissant, qui recense plusieurs milliards de pages. Cet article a pour but d'introduire aux problèmes que soulève l'indexation automatique du web, en particulier par Google. On s'intéressera, dans ce premier article d'une longue série, à la manière dont certaines informations sensibles ou confidentielles peuvent être facilement localisées grâce à des requêtes habilement conçues.
Une armée de robots
Le moteur de recherche de Google est d'après les dernières statistiques le moteur de recherche le plus utilisé dans le monde. Actuellement, il recense quelques 8 milliards de pages internet, consultables en permanence grâce aux archives de Google. Pour référencer toutes ses pages Google utilise plusieurs robots, que je vais vous présenter.
Google Bot : c’est une application qui navigue sur les pages internet. Dés lors qu’elle rencontre un lien, elle l’enregistre dans sa liste de pages à visiter. Pour effectuer cette tâche importante qui demande énormément de ressources, Google utilise plusieurs centaines de machines. Les Google Bots naviguent en permanence sur internet, et récupèrent le contenu des sites.
Pour répondre objectivement et le mieux possible à la requête d’un internaute, Google utilise des algorithmes complexes et relativement secrets, et évoluant constamment. Parmi les critères pris en compte, c'est le Page Rank (indice de popularité) qui a dès le départ assis la popularité de ce moteur, parce qu'il a apporté un progrès sans précédent à la pertinence des réponses. Pour le calculer, Google comptabilise tous les liens qui pointent d’une page vers une autre. Ce calcul prend aussi en compte le PR de la page qui pointe sur l’autre : c'est contagieux. L’importance d’un site est proportionnelle aux nombres de pages qui pointent vers lui.
Google Dance : cela correspond à une période où Google effectue un référencement massif de ses pages qui dure plusieurs jours. Une fois l’indexation des 8 milliards de pages terminée, Google doit calculer les PR de chaque site, et distribuer cette information à tous ses serveurs. Ce nom a été attribué par des fans de Google.
Durant plusieurs années, la Google Dance avait lieu toutes les 4 à 5 semaines, et provoquait d’importantes modifications sur le référencement et le positionnement des sites. Google accordait énormément d’importance au PR des sites. Mais actuellement, l’importance du PR a légèrement diminuée, au profit d'autres critières, comme la fréquence des mises à jours. En effet, après le passage de Google Bot sur une page, le PR n’étant pas modifié, il n’y avait aucun changement de positionnement du site. Il fallait attendre la prochaine Google Dance. Maintenant, à chaque passage de Google Bot, les sites mis a jour remontent dans le positionnement. Le nombre de machines gérant les Google Bots ayant augmenté, leurs passages sur les sites sont plus fréquents. La valeur des PR joue par contre un rôle important dans la fréquence des visites des Google Bot.
L'art de la recherche
Pour effectuer une recherche sur Google, vous pouvez, comme monsieur tout le monde, utiliser de simples mots clés. C'est déjà très puissant, mais le but de cet article est de montrer des techniques qui permettent de cibler bien d'avantage les informations recherchées.
Les opérateurs compris par Google sont nombreux, et certains sont peu documentés. On verra que leur combinaison offre beaucoup de souplesse et de précision. Voir le tableau pour une liste non exhaustive des différents opérateurs que Google propose.
- -
- Exclure un mot de la recherche. Il peut aussi être combiné à d'autres opérateurs. Par exemple pour exclure un site :
windows -site:microsoft.com
- +
- Forcer la recherche sur un mot ignoré. Par exemple :
+ET l'extraterrestre. Il permet aussi de donner plus de poids à un mot quelconque par rapport aux autres.
- ~
- Chercher également les synonymes (en anglais pour l'instant). Par exemple :
~tips google
- *
- Remplace un mot quelconque. Deux étoiles qui se suivent remplacent un nombre quelconque de mots. Exemple :
"il n'y a que ** blesse"
- expr1 | expr2
expr1 OR expr2 - Disjonction (OU). Utile avec des parenthèses ou des guillemets. Par exemple :
"(stack | buffer) overflow"
- nombre..nombre
- Intervalles numériques. Par exemple :
"CAN 2003..2004" outlook site:cve.mitre.org
- site
- url
- Se limiter à un site défini.
- link
- url
- Se limiter aux sites pointant vers celui spécifié.
- related
- url
- Chercher sur des sites qui traitent du même sujet que le premier.
- filetype
- ...
ext: ... - Spécifier l'extension du document.
- intitle
- mot
intext: mot
inanchor: mot
inurl: mot - Respectivement : chercher le mot dans le titre, le corps du document, dans ses liens, ou dans l'url seulement.
D'autres opérateurs moins utiles sont donnés dans l'aide de Google, ainsi que sur des sites comme http://googleguide.com. Les opérateurs intext, inurl, inanchor, etc. peuvent être complétés du préfixe all, qui permet d'appliquer le critère à tous les mots qui le suivent. Ce doit bien sûr être le dernier opérateur de la recherche.
Google Hacking
Nous allons maintenant voir comment Google peut mettre le doigt sur des informations critiques à l'aide de quelques exemples.
Nous savons que Google sait, et nous savons comment lui faire dire. Il reste maintenant à savoir ce que l'on veut chercher...
1. Chercher une application web spécifique
Qu’est ce qui différencie un serveur qui tourne avec Apache ou sur Free BSD ? Souvent une phrase type. Pour un serveur NT 4, ce sera par exemple « Microsoft-IIS/4.0 ». Voir le tableau pour quelques exemples.
Comment se protéger ?
Ce genre d'information peut être utilisé par un intrus qui cherche une version vulnérable d'un serveur. Pour se protéger, on peut modifier les messages par défaut du serveur, dans les fichiers de configuration, et par exemple supprimer les numéros de version.
//à mettre en forme Nom du serveur Requête Microsoft IIS 4 "Microsoft-IIS/4.0" intitle:index.of Microsoft IIS 5 "Microsoft-IIS/5.0 server at" Red Hat “Red Hat Secure/2.0” intitle:index.of Apache 1.2.0 “Apache/1.2.0 server at” intitle:index.of Apache 1.3.27 “Apache/1.3.27 server at” intitle:index.of Apache 1.3.20 et PHP 4.0.6 “Apache/1.3.20 Sun Cobalt (Unix) PHP/4.0.6 mod_ssl/2.8.4 OpenSSL/0.9.6 FrontPage/5.0.2.2510 mod_perl/1.26” intitle:index.of
De la même façon, on peut trouver des pages générées par des applications données (forum, CMS, etc.). Il est aussi possible d’obtenir de très nombreuses informations sur le serveur, son état, ou les statistiques des visites. Certain webmasters peu attentifs laissent l’accès à leurs getstats ou autre WebAlizer.
//idem Resources Requête Acces aus statistiques intitle:"Usage Statistics for" "Generated by Webalizer" Page admin intext:"Calendar Program © Copyright 1999 Matt Kruse" "Add an event" SQL Injection, CSS intitle:"myBloggie 2.1.1..2 - by myWebland"
Comment se protéger ?
Pour se protéger contre ce type d’attaque il suffit d’être attentif aux failles trouvées et aux correctifs afin de les appliquer. Généralement les failles importantes sont très rapidement corrigées, alors si vous êtes vous-même réactif, personne n’aura le temps de s’en apercevoir. Si vous avez peur de ne pas être réactif, le moyen le plus simple reste de cacher le numéro de version dans le copyright en modifiant le code.
2. Fichiers de mots de passe
Il aussi facile de trouver des fichiers contenant des logins ou des mots de passes ou même les deux. Prenons comme exemple le serveur FTP, Serv-U. Pour ce programme, un fichier de configuration nommé par défaut ServUDaemon.ini et qui contient tous les logins et mots de passe (cryptés de manière réversible) des utilisateurs, administrateurs compris. A l’aide de la requête inurl:ServUDaemon.ini on peut trouver des fichiers contenant des listes d'utilisateurs.
De la manière similaire, il est possible de trouver de très nombreux fichiers contenant ce type d’informations, avec des requêtes bien ciblées. Il existe aussi de nombreux fichiers contenant des notes personnelles d'utilisateurs. Par exemple pour éviter d’oublier tous leurs mots de passes, certaines personnes les inscrivent dans un fichier texte et les mettent en ligne, sans penser qu'on puisse tomber dessus. Il est pourtant facile de prouver le contraire, en cherchant inurl:mot-de-passe.txt ou encore inurl:mot_de_passe.txt. Note : on peut rajouter filetype:txt aux requêtes précédentes, pour éviter quelques faux positifs.
Comment se protéger ?
Pour se protéger vos fichiers contenant des logins et mots de passes, en premier lieu ne les mettez pas sur un compte web ! Evitez de les stocker sur votre compte http://roxor.free.fr/prive/moi/ , sauf si vous protégez votre dossier avec un .htaccess.
3. Les messages d'erreur
Il existe une autre technique qui peut révéler des identifiants et toutes sortes d’informations sur un site : exploiter les messages d'erreur. Ils peuvent contenir des informations sensibles. On peut par exemple, lors d’une erreur de connexion à une base MySQL, récupérer le pseudo de connexion à la base. D’autres erreurs permettent de récupérer des informations sur le système, et notamment le chemin complet et réel du site sur le serveur (Path Disclosure). Voir le tableau pour quelques exemples.
//idem Informations Requête Système d'exploitation, chemins, etc. intext:"Error Message : Error loading required libraries." Identifiants et tables mysql "Warning: mysql_query()" "invalid query" Chemin warning "error on line" php sablotron
Comment se protéger ?
Les messages d'erreurs ne sont utiles qu'aux développeurs. En principe, un site en production ne devrait jamais afficher de message d’erreur. Par exemple en PHP, on peut les désactiver avec error_reporting(0);. On peut aussi modifier légèrement les messages (par exemple mysql\share\french\errmsg.txt). Mais cela reste fastidieux, et partiellement efficace.
3. Les périphériques
Nous avons réussi a trouver des logins, des mots de passes, des failles diverses. Mais ce n'est pas encore le plus inquiétant. Il existe un domaine que nous n’avons pas abordé mais qui a son importance : les périphériques. De plus en plus de périphériques sont fait pour fonctionner en réseaux, et possèdent donc des pages d’administrations à partir on peut configurer, programmer des taches. Ces périphériques, sont des imprimantes, des modems, des routeurs, des webcams… Voir les illustrations.
Comment se protéger ?
Pour se éviter que des gens de l’extérieur n’aient accès a vos périphérique disponible sur le réseau, il y a plusieurs possibilité. Dans le cas ou tout votre réseau est local, par exemple une connexion familiale avec une camera de surveillance, vous pouvez commencer par limiter l’accès au seul réseau local. Pour le cas ou votre périphérique doit être connecté sur le net, pour un modem router par exemple, configurer le de façon à se que son accès soit protéger par mot de passe, et pas celui par défaut.
4. Trouver des informations précises
Certaine de ces requêtes permettent d’obtenir encore d'autres informations beaucoup plus spécifique. Par exemple, nombreux sont les gens cherchant des invitations pour les comptes @gmail. Pour eux ils existe la requête :
intext:gmail inviteou celle ci :
inanchor:http://gmail.google.com/gmail/a
qui permet de trouver des pages proposant des invitations gratuites.
Et pour conclure nous allons voir qu’avec Google, on peut trouver des informations qui ne doivent pas faire plaisir aux éditeurs de logiciels (à moins que ce ne soit l'inverse, si on y réfléchit). En grande majorité, la protection des logiciels contre la copie consiste en un numéro de série. Google possède dans sa base des milliers de ses numéros. Encore une fois, nous allons devoir trouver comment lui faire dire ces informations. Un truc, très efficace également dans d'autres contextes, est d'utiliser dans la requête une partie, connue, de l'information recherchée. Par exemple, les numéros de série d'un logiciel commencent parfois tous par le même groupe de lettres. On peut aussi apater en donnant un ou deux vrais numéros de série, qui nous permettront de tomber sur une page en contenant une grande liste.
Google se défend ?
Il y a quelques mois, un virus nommé Santy exploitait une faille dans les forum PhpBb (voir THJ19). Pour trouver ces victimes ce vers recherchait une version bien particulière de PhpBb à l'aide de Google. Leurs serveurs recevaient donc chaque jour des milliers de fois exactement la même requête, qui d’ailleurs n'avait rien d'une requête habituelle. Pour contrer les dire de certain, Google bloqua cette requête ainsi que quelques autres. Il bloqua par exemple les requêtes comme inurl :admin.php, qui permettait de tomber sur des pages d’admin, certaines protégées et d’autres non. Depuis quelque temps, Google a levé ces filtres sur la plupart des requêtes. Il ne reste que les requête qui touche à PhpBb, comme inurl:viewtopic.php.
Conclusion
Aujourd’hui les robots de Google ont référencé presque toutes les pages d’Internet, cependant le volume d’informations qu’ils récupèrentest tel qu'il les empêchent de le traiter correctement. Ce manque de sérieux dans le traitement des informations, au profit du chiffre du plus grand nombre de pages référencées, a fait que de très nombreuses informations sensibles ont été mélangées à la masse globale des informations. Ces informations ont beau être noyées pour la majorité des gens, il existe des personnes mal intentionnées qui, elles, ont les moyens de les retrouver, comme on l'a vu.
De plus, le fait que Google possède tant d’informations, et tant de mystères, peut nous laisser perplexe sur la réalité de ses capacités. Google laisse planer une atmosphère de mystère concernant plusieurs informations cruciales : combien y a-t-il de pages réellement référencées ? Comment fonctionne Google exactement, est-ce que Google est réellement objectif dans ses réponses ? Ira-ton jusqu'a dire : Google est-il encore sous contrôle de ses créateurs ? Globalement, peut-être, mais localement ? Tant de questions qui restent actuellement sans réponses et auxquelles nous tenterons de répondre dans de prochains articles sur Google.
Bibliographie
- Google Hacking For Penetration Testers - Syngress
- Google Hacks - O'Reilly
- http://www.google.fr
- Voir aussi : http://www.kali-creation.com/security
