Monthly Archives: August 2020

Pourquoi Scénariothèque.org devrait passer open-source ?

Ça y est, je suis un hacker, maintenant ?

Sur ce blogue, j’ai pour habitude d’évoquer l’univers du jeu de rôle en proposant des fiches de personnages, des articles et surtout des podcasts de liveplay ou des aides de jeu.
Aujourd’hui, je vous propose une expérience nouvelle, je vais vous raconter comment je suis arrivé à obtenir des mots de passes vitaux de la Scénariothèque.
Dans ces conditions, il m’aurait été facile de pirater le site.

Laissez-moi vous expliquer ma démarche.

Avant toute chose, sachez que j’ai demandé à l’équipe de la Scénariothèque son accord pour publier cet article.

Une présentation

Je me définis comme un libriste, c’est-à-dire un partisan du logiciel libre. Je suis pour le partage du savoir, des connaissances, etc. Je suis fondamentalement convaincu que cette philosophie permet de faire de grandes choses. Cela peut sonner un peu «cheesy», mais c’est comme ça.
Par exemple, je contribue à des logiciels, et également à Wikipédia depuis 2006. J’ai d’ailleurs partagé des ressources sur la Scénariothèque.
Contribuer, aider, améliorer font partie de mon ADN. J’évolue dans un monde numérique où si quelque chose te déplaît ou fonctionne mal, tu peux demander sa réparation, voir le réparer toi-même.

Maintenant que vous savez ça. Parlons un peu de la Scénariothèque.

La Scénariothèque

Si vous êtes rôlistes, vous avez certainement déjà fouillé la Scénariothèque à la recherche d’un scénario intéressant ou tout autre support pour une partie future.
Pour les autres, la Scénariothèque est un site web répertoriant un nombre incalculable de ressources pour le Jeu de rôle.
Cela va de la fiche de personnage, aux scénarios en passant par des aides de jeu.
Le site est alimenté par la communauté depuis de nombreuses années. Son développement est assuré par une équipe de bénévoles.
D’après mes informations, ils doivent être 3 personnes environ, travaillant sur leur temps libre.

Bref, cette mine d’or est difficile à exploiter. Le site a de nombreux défauts qui ralentissent la prise d’informations.

La démarche:

Mon métier consiste à créer des logiciels avec interfaces graphiques. Sans être un expert, j’ai une certaine expérience en «expérience utilisateur» (UX) et en design d’interface.
Ayant la fibre artistique d’une huître déshydratée, je ne suis pas la bonne personne pour rendre le site beau, élégant, classe, mais je pense avoir quelques idées pour le rendre lisible et faciliter sa prise en main.
Bref, il y a quelques mois, je recherchais un document sur la Scénariothèque et je me suis confronté à des problèmes. Frustré comme tout, j’ai décidé de faire un article plein de rage pour expliquer tout ce que je n’aimais pas dans ce site.
Quand la colère fut passée et la fainéantise revenue, j’ai réalisé qu’un article troll n’était pas la solution. J’ai revu ma copie, et j’ai voulu orienter mon article pour exhorter à la publication du code source du site sous licence libre ou une réécriture complète sous licence libre.

Par acquit de conscience, j’ai fouillé un peu pour vérifier qu’une telle démarche n’avait pas été démarrée par l’équipe.

Fouiller le domaine

Dans l’objectif de trouver un éventuel site de test des nouveautés, j’ai fouillé le domaine scenariotheque.org pour trouver ses sous-domaines.
Des sites internet en ligne font ça très bien.

[Explications techniques, mais pas trop]
Un domaine peut posséder un grand nombre de sous-domaines.
Par exemple, le domaine .com a pour sous-domaines tous les noms de domaines en quelques-chose.com.
C’est également le cas pour rolisteam.org, qui a pour sous domaine blog.rolisteam.org, wiki.rolisteam.org, etc.
Il existe des solutions en ligne pour trouver la liste des sous-domaines.
[Explications techniques, mais pas trop]

Une fois, la liste des sous-domaines récupérée, j’ai simplement ouvert un onglet de mon navigateur sur chaque sous-domaine. Espérant y trouver un site de test avec de nouvelles fonctionnalités.
La grande majorité des sous-domaines était inintéressante: vide, non fonctionnel ou vieux et bogué. Cependant, le sous-domaine www.beta.scenariotheque.org attira mon attention.

Comme vous pouvez le voir sur la capture d’écran si dessus. Ce site montre l’index des fichiers. Quelques explications techniques sont nécessaire pour que vous compreniez pourquoi ce genre de page est intéressante pour les curieux.

Rappel sur le fonctionnement d’un site web/serveur web

Un site web n’est qu’une série de fichiers accessible depuis un serveur web. La machine qui héberge le site web exécute un serveur web. Ce serveur web sait qu’il doit mettre à disposition le contenu d’un dossier en particulier.
Exemple:

L’utilisatrice Lucie a du contenu à mettre en ligne (des pages web, des images …), elle a regroupé l’ensemble dans un dossier /home/lucie/siteweb. Elle configure le serveur web, déclarant le site web:

http://luciejdr.fr/ a pour dossier racine /home/lucie/siteweb. Ça marche!

Le serveur est configuré, il fonctionne, Lucie tape http://luciejdr.fr/ dans un navigateur web. Le serveur reçoit une demande pour le contenu présent dans «/home/lucie/siteweb». Par convention, dans ce cas-là, un serveur web cherche une page index.html. Si elle n’existe pas, alors il va la créer automatiquement en listant le contenu complet du dossier. Exactement ce qui se passait avec l’adresse: www.beta.scenariotheque.org

En général, une page comme ça peut signifier plusieurs choses:
1- Le site est à l’abandon, le webmaster l’a oublié.
2- Il y a un défaut de protection.
3- Une panne (ou du moins tous les services ne se sont pas lancés).

Bref, dans tous les cas, c’est toujours intéressant de fouiller un peu. Très, vite j’ai remarqué la présence de fichiers php mais également un gitignore et du dossier git.
J’ai essayé de récupérer les fichiers php, qui sont des pages web un peu intelligentes. Si php n’est pas activé sur le serveur, le code php peut-être accessible (dans le cas d’un serveur web très ancien).
Cela n’était pas le cas, donc j’étais sur une fausse piste.
Maintenant, il y a le dossier git.

Qu’est-ce que Git ?

Git est une solution libre de gestion de code. C’est un logiciel qui permet de gérer l’évolution d’un code source pour faciliter le travail en équipe, le suivi de version, etc. En gros, c’est l’historique de toutes les modifications sur le code source. Le dossier «.git» contient l’ensemble des données relatives au projet. C’est particulièrement illisible pour un humain de lire dans ses données par un navigateur web. La solution serait de récupérer entièrement le dossier «.git» et d’utiliser l’outil git pour consulter les données.
C’est exactement ce que j’ai fait ensuite.

Une simple commande Linux pour aspirer entièrement le site web: wget -r www.beta.scenariotheque.org

Me voilà en possession de l’historique git. Il reste plus qu’à l’explorer un peu et rechercher s’il y a des choses intéressantes.

Après, quelque temps de recherche, je suis tombé sur ça:

Comme vous pouvez le voir, il s’agit de la modification des informations de connexions à la base de données entre la base de production et celle de test.

C’est à ce moment que j’ai arrêté mes recherches et aie contacté le propriétaire de la Scénariothèque pour l’informer de la faille.

En conséquence, des mesures de protection ont été prises pour combler cette faille.
Une personne malhonnête avec ses informations aurait pu voler l’ensemble des données du site: Les contenus rôlistes, mais également les comptes utilisateurs, un email et un mot de passe chiffré.

Conclusion:

Sans vouloir parler pour eux, cette faille me semble être qu’une erreur d’inattention de la part de l’équipe du site. Ils sont bénévoles et n’ont pas beaucoup de temps à consacrer au site. J’en conviens bien volontiers.
Pour pallier ce problème, l’ouverture du code me semble être la solution idéale.
En dépit des difficultés des premiers jours, la peur d’être jugé sur la qualité du code. Le sentiment de dépossession de son travail.
Elle permettra à toutes les bonnes volontés de travailler sur le projet.
De plus, cela mettra à disposition de nombreuses solutions pour améliorer le processus d’intégration (éviter d’avoir un site de test à l’abandon).