Filesystem Intruder
đť„ž Introduction
Ce challenge consiste à compromettre le serveur avec le compte administrateur afin de récupérer le flag.
đť„ž Solution
La page d’accueil propose une fonctionnalité supplémentaire lorsque nous sommes connectés en tant qu’administrateur :
- Ajouter un utilisateur
đť„žđť„ž Ajouter un utilisateur
Nous avons la possibilité d’ajouter un utilisateur dans l’application.
En ajoutant l’utilisateur fxoverflow, un message de confirmation s’affiche, validant la création de l’utilisateur.
Nous remarquons que le champ “username”, que nous contrôlons, est reflété dans la réponse du serveur. Si ce champ n’est pas correctement filtré, cela pourrait nous permettre d’exploiter une vulnérabilité pour compromettre le serveur.
Ici, nous tentons une injection de type SSTI (Server-Side Template Injection).
Le serveur nous renvoie 49, confirmant ainsi la vulnérabilité SSTI.
Payload
Pour exploiter cette faille, nous utilisons un payload qui nous permet d’exécuter des commandes système et de compromettre le serveur afin de rechercher le flag.
1
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
Ce payload nous donne la capacité d’exécuter des commandes système.
Nous procédons alors à une énumération des fichiers sur le serveur pour repérer des éléments intéressants.
Nous trouvons un fichier intéressant .flags..
En lisant le contenu de ce fichier, nous obtenons le flag.
đť„ž FLAG : PPC2024{w8zpU47VNKx2n8}
đť„ž