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}
đ