Contexte
Il y a quelques mois j’étais tombé par hasard sur un tweet (Oui je sais, je devrais dire « post » depuis que Twitter est devenu X et que Elon est devenu humoriste mais on s’en fout) destiné principalement aux bug bounty hunters et qui mentionnait un nom de dossier que je n’avais jamais vu sur un serveur Apache. Il s’agit de /home/000~ROOT~000.
Premiers tests
Plutôt que de l’ajouter à une wordlist pour faire du fuzzing, j’ai simplement regardé sur Google ce qui ressortait. Pas mal de serveurs sont listés.
Si on regarde un peu les premiers résultats, les dossiers systèmes sont accessibles, tout comme ceux des utilisateurs. On peut rapidement voir quelques noms intéressants comme automation, backup, apparmor, certificates, cron, etc…
Analyse de la situation
Encore aujourd’hui, même si je comprends l’utilité de ce dossier du point de vue d’un hacker (éthique ou pas), pentester, ou hunter, pour trouver des informations utiles pour une future attaque, je ne suis pas sûr de comprendre l’origine technique de ce phénomène. Je vais donc exposer ici mes éventuelles suppositions en espérant que ça provoque un effet rubber duck debugging. N’hésitez pas à apporter plus de précision en commentaire si vous connaissez déjà ce sujet et que je passe à côté d’un élément important, je suis preneur.
Les suppositions sont:
- Un nom de répertoire personnalisé Il est possible que 000~ROOT~000 soit un nom de répertoire personnalisé créé par un administrateur système (même si plusieurs sysadmins qui personnalisent de la même manière en provoquant la même faiblesse, c’est peu probable), une application ou un script. La partie ~ROOT~ peut suggérer que le répertoire a quelque chose à voir avec une fonction de niveau racine ou système. Il peut s’agir d’un dossier utilisé pour les sauvegardes, les journaux système ou un répertoire de remplacement.
- Répertoire de sauvegarde ou temporaire La convention de dénomination 000~ROOT~000 peut indiquer un dossier de sauvegarde ou temporaire. Les chiffres 000 aux deux extrémités peuvent représenter une sorte de système de version ou de séquençage. Par exemple, un système de sauvegarde peut générer des répertoires numérotés pour conserver plusieurs états de sauvegarde, et ROOT peut signifier qu’il s’agit de données importantes au niveau du système ou de la racine.
- Répertoire du système ou de l’application web Il peut également s’agir d’un répertoire créé par une application web, un système de gestion de contenu (CMS) ou un système d’hébergement web. Certains systèmes de gestion de contenu ou d’hébergement utilisent des schémas de dénomination bizarres pour stocker des configurations, des sauvegardes ou des fichiers spécifiques liés au site. La partie ROOT peut faire référence au répertoire racine d’une application ou d’un site web spécifique.
- Anomalie du système de fichiers ou du serveur Il est également possible qu’il s’agisse d’un artefact ou d’une erreur résultant d’une mauvaise configuration du système de fichiers, d’un script ou d’un processus automatisé. Si, par exemple, une application ou une tâche système ne s’est pas déroulée correctement, il peut en résulter un nommage inhabituel des répertoires.
- Tout simplement un symlink, même si je vois pas dans quel contexte ce serait créé.
Que faire si votre serveur est impacté?
Si vous gérez un ou plusieurs serveurs web, il serait préférable de vérifier s’il apparait sur Google en ajoutant le dork inurl et votre nom de domaine à la recherche vue précédemment:
"home/000~ROOT~000" inurl:"example.com"
Si vous voyez votre site dans les résultats de recherche comme dans cet exemple ci-dessus, voici quelques possibles vérifications à effectuer afin d’y remédier ou au moins d’en limiter l’impact (Comme je ne connais pas encore la raison précise, ce sont plus des précautions que de vraies remédiations)
- Vérifiez le contenu du répertoire : Si vous avez accès au système, selon le type de serveur que vous utilisez, examinez le contenu du répertoire home/000~ROOT~000. Recherchez les fichiers qui pourraient indiquer son utilité. Si le répertoire est vide ou contient des fichiers étranges, cela peut indiquer un problème.
- Examinez les journaux du serveur : Vérifiez les journaux du système (tels que /var/log/ sous Linux) pour toute activité inhabituelle liée à ce répertoire. Cela peut vous aider à déterminer s’il a été créé par un processus ou une application.
- Analyses de sécurité : Exécutez une analyse de sécurité sur le serveur pour vérifier la présence de logiciels malveillants ou d’activités suspectes. Des outils tels que ClamAV, rkhunter ou chkrootkit peuvent aider à détecter des compromissions potentielles.
- Vérifier les problèmes de configuration : Vérifiez si des applications ou des serveurs web (comme Apache) génèrent ou utilisent ce répertoire. S’il est lié à une application web, examinez les fichiers de configuration pour comprendre pourquoi il est créé.
Que faire si votre site préféré est impacté?
Si vous trouvez ce genre de dossier lors d’un pentest ou d’exploration random un peu poussée, prenez 5mn pour en faire part au(x) responsable(s) du site web. En général on peut trouver un formulaire de contact ou une adresse email dans le menu principal ou en bas de page, vous aiderez probablement un sysadmin qui n’était pas au courant de ce leak.