Writeup #Web 3 – Non !

Blog 3.6.2011 No Comments

Cette épreuve avait pour objectif d’afficher une page Admin. Pour cela les challengers ne disposaient que de leur identifiant, leur mot de passe ne leur était pas communiquer.

La première étape consistait donc à se logger sur l’interface en bypassant le formulaire de login. Il y avait deux points d’entrée : le système de login et l’affichage des news par catégorie. L’astuce consistait à lire les mentions légales et à constater que le site était réalisé avec le framework CodeIgniter et le système de stockage MongoDB. Ce dernier étant du NoSQL, les injections SQL étaient donc inefficaces.

En revanche MongoDB est vulnérable à l’injection d’objet. Il fallait donc utiliser cette faille pour bypasser le système de login :

La deuxième étape consistait maintenant à afficher la page Admin. Il fallait pour cela avoir le flag admin à 1 :

Plusieurs points d’entrée étaient possible :

  • L’ajout et la suppression des articles
  • L’ajout et la suppression des catégories
  • La modification des informations du compte

La seconde vulnérabilité se trouvaient dans la modification du compte. A l’inverse des bases de données relationnelles, le système de stockage MongoDB autorise l’ajout de nouvelles colonnes à la volée. C’est à dire que le squelette d’une table n’est pas fixé pour chaque enregistrement : dans une même collection une entrée peut contenir 5 colonnes alors qu’une autre peut en contenir 10 !

Partant de ce principe le flag Admin pouvait être rajouté dans la modification du compte :

La page admin contenant le pass de validation était désormais disponible :

Le code source du site web et le dump MongoDB peuvent être téléchargés ici.

Leave a Reply