Robots.txt, un ami au service des curieux

J’ai déjà eu l’occasion à plusieurs reprises de mentionner le danger que représente le fichier robots.txt qui se trouve à la racine de votre site web. On y accède simplement depuis l’url http://lesite/robots.txt.

Ce fichier est destiné aux bots; ces scripts des moteurs de recherche afin de leur expliquer ce qu’ils peuvent ou ne peuvent pas faire : ils peuvent indexer tel ou tel dossier ou fichier, ils ne peuvent pas indexer tel ou tel fichier. Attention de bien comprendre: vous leur « demandez » de respecter le fichier; ce que font les bots honnêtes. Ils ne sont aucunement contraints de le faire. Un peu comme la nétiquette pour les humains.

Toutefois, le fichier robots.txt est parfois utile aux humains. Il m’arrive de plus en plus, comme premier réflexe quand je vais sur un site, d’afficher ce fichier. Un réflexe de vilain curieux mais j’assume…
Je rédige ce billet dans la foulée de la découverte d’un site Drupal où le fichier robots.txt en place est celui-ci (je le simplifie toutefois pour la clarté de l’article)

# robots.txt
User-agent: *
# Directories
Disallow: /includes/

# Files
Disallow: /CHANGELOG.txt
Disallow: /cron.php
Disallow: /install.php
Disallow: /INSTALL.txt
Disallow: /update.php
Disallow: /UPGRADE.txt

# Paths (clean URLs)
Disallow: /admin/

# Paths (no clean URLs)
Disallow: /?q=admin/

Il s’agit du fichier natif de Drupal.

On y apprend l’existence d’un grand nombre de fichiers et de liens. On apprend par exemple, à la toute fin du fichier, que pour accéder à l’admin du site, l’url est /?q=admin. Peut-être ne le saviez-vous pas; vous venez donc, grâce à ce simple fichier, de l'apprendre. Ce fichier robots.txt est donc … pédagogique.

Mais s’il n’y avait que ça, ce ne serait pas méchant.

Au début du fichier, on voit plusieurs fichiers txt qui sont mentionnés dont p.ex. CHANGELOG.txt.  Ce fichier est assez sympa pour un curieux puisqu’il donne la version du CMS utilisé.  Sur le site que je viens de visiter: Drupal 6.25, release du 29-02-2012. Fin septembre 2014: cette version a 30 mois de retard et un paquet de versions en retard puisque Drupal propose la version 7.31 ce jour.

Affichage du CHANGELOG.txt qui dévoile le CMS utilisé et le numéro de version de la dernière mise à jour

CHANGELOG.txt - Affichage du CHANGELOG.txt qui dévoile le CMS utilisé et le numéro de version de la dernière mise à jour

On voit aussi une ligne

Disallow: /install.php

Donc, je peux présumer qu’il y a (eu) un fichier http://lesite/install.php.  Essayons:

Script d'installation toujours accessible sur un site de production

Script install.php de Drupal - Script d'installation toujours accessible sur un site de production

Là, on commence à percevoir le danger! Les scripts d’installation ainsi que d’update (update.php) sont toujours présent et accessible à n’importe qui, pas de restrictions sur l’IP, pas de mot de passe, rien: c’est presque une invitation au hack.  Même le site officiel de Drupal ainsi que, p.ex. le site de l’université d’Harvard n’ont pas bloqué ces urls-là; c’est juste étonnant et interpellant.

Sur un autre site, en regardant le robots.txt, c’est rien de moins qu’une mise à nu qui est proposée:

Disallow: /phpinfo.php

phpInfo ou comment mettre à nu votre configuration

phpInfo sur un site de production - phpInfo ou comment mettre à nu votre configuration

Conseils

Gardez à l’esprit que le fichier robots.txt n’est pas, par défaut, protégé. N’importe qui peut y accédez. N’allez pas y mentionner des fichiers et des dossiers que vous voulez garder secret; il existe d’autres moyens pour y arriver.

1. Bloquer l’accès au fichier robots.txt: pour cela, un petit tour de passe-passe au niveau du fichier .htaccess permet de détecter qui accède au fichier (est-ce un bot ou un humain?). A vous d’autoriser ou non l’accès.   aeSecure propose l’option 2.7 « Bloque l’accès au fichier robots.txt aux curieux » à cette fin: un fichier bidon robots.txt sera délivré aux humains et le vrai fichier sera délivré aux moteurs de recherche (démo: https://www.aesecure.com/_demo/aesecure/setup.php#aeSecureOther)

2. Ne mettez pas, p.ex., un Disallow: /administrator dans le fichier robots.txt mais optez pour la solution de créer un fichier .htaccess dans le dossier /administrator avec ces trois lignes:

<IfModule mod_headers.c>
Header set X-Robots-Tag "noindex, nofollow"
</IfModule>

Le résultat étant le même hormis que vous ne devez pas dévoiler l’existence du dossier /administrator au monde entier

3. Modifiez systématiquement le contenu du fichier robots.txt car il est aisé, s’il est resté inchangé, de comparer ce fichier-là avec le fichier robots.txt de Joomla!®, de WordPress, de Drupal, etc. et donc de déterminer le CMS sur lequel repose votre site, juste en regardant ce simple fichier robots.txt. Personne ne détectera que le fichier est utilisé dans ce but.

4. Dans votre fichier robots.txt, ajoutez une ligne pour interdire l’indexation de … robots.txt. Cela peut paraître idiot (et c’est le cas) mais il suffit de lancer une recherche Google comme ci-dessous pour trouver des sites WordPress. L’imagination des curieux fera le reste pour mieux cibler leurs proies.

Google hacking : recherche dans les fichiers robots.txt

Back to top