Décoder l'identifiant stocké : le base64 n'est pas du chiffrement

Élévation de Privilèges & Post-Exploitation Niveau 2/4 ~3 min 25 août 2026

Le défi

Une application affirme qu'elle 'chiffre' le mot de passe de sa base de données avant de l'enregistrer, mais la valeur stockée n'est que du base64. Récupérez le mot de passe à partir du bloc encodé et soumettez le mot de passe de la base de données.

Ce que tu vas apprendre

  • Reconnaître le base64 dans un identifiant stocké grâce à son jeu de caractères et au remplissage ==
  • Décoder un bloc base64 en un clic pour récupérer un mot de passe en clair
  • Comprendre pourquoi le base64 n'est pas du chiffrement et n'offre aucune protection au repos
  • Constater que quiconque peut lire une valeur stockée peut décoder du base64 sans aucune clé
  • Savoir ce qu'exige une réelle protection d'un identifiant stocké

Compétences testées

Reconnaissance du base64Décodage base64Évaluation des faiblesses de stockage des identifiants

Prérequis

  • L'idée que les applications stockent quelque part le mot de passe de leur base de données
  • À l'aise pour reconnaître le base64 grâce à son remplissage == final

Comment ça marche

Les applications ont besoin d'un mot de passe pour se connecter à leur base de données, et ce mot de passe doit se trouver quelque part où l'application peut le lire au démarrage : un fichier de configuration, une variable d'environnement, ou une table de paramètres. Un schéma courant mais erroné consiste à encoder le mot de passe en base64 avant de le stocker et à appeler cela du « chiffrement » pour que ça paraisse plus sûr lors d'une revue. Ce n'est pas du chiffrement. Le base64 est un encodage réversible et public, sans clé, si bien que la valeur obscurcie n'est qu'à un décodage du mot de passe réel.

Vous pouvez reconnaître du base64 dans un bloc stocké de la même manière que partout ailleurs. Il utilise des lettres majuscules et minuscules ainsi que des chiffres, peut comporter un ou deux symboles, et se termine fréquemment par un ou deux signes = de remplissage. La valeur stockée ici se termine par ==, ce qui indique fortement que la forme externe est du base64. Le décoder révèle le mot de passe d'origine en clair, exactement tel que l'application l'utilise.

L'impact sur la sécurité est direct. Quiconque peut lire la valeur stockée, que ce soit via une configuration divulguée, une sauvegarde, une ligne de log, ou un hôte compromis, peut récupérer le mot de passe de la base de données en production en un seul clic, car aucun secret n'est nécessaire pour inverser le base64. C'est pourquoi le stockage en base64 est un cadeau pour l'élévation de privilèges : il transforme un accès en lecture à un fichier en des identifiants complets de base de données. Les boutons ROT13, hex, URL et inverse attendent des formats d'entrée différents et sont des leurres ici.

Erreurs fréquentes

  • Croire que « chiffré » signifie sûr. Appeler le base64 « chiffrement » ne lui donne pas de clé. La valeur est réversible par quiconque peut la lire.
  • Choisir le mauvais décodeur. Le hex n'utilise que 0-9a-f et le ROT13 conserve la même longueur et la même forme. La casse mixte, les symboles et le remplissage == pointent vers le base64.
  • Soumettre le bloc encodé. La réponse est le mot de passe décodé, pas la chaîne base64.
  • Supposer que le stockage au repos est peu risqué. Une configuration ou une sauvegarde lisible transforme un mot de passe en base64 directement en accès à la base de données en production.

Comment s'en protéger

La correction consiste à cesser de traiter le base64 comme une protection et à gérer correctement les identifiants stockés. Un mot de passe de base de données que l'application doit utiliser à l'exécution devrait provenir d'un gestionnaire de secrets, pas d'un bloc base64 dans un fichier, et la valeur ne devrait jamais être qualifiée de chiffrée à moins qu'elle ne le soit réellement.

  • Stockez les identifiants de service dans un gestionnaire de secrets dédié avec contrôle d'accès et journalisation d'audit, pas dans une configuration en clair.
  • Si un identifiant doit se trouver dans un fichier de configuration, chiffrez-le avec un chiffrement authentifié utilisant une clé que l'application récupère depuis un stockage géré, jamais du base64.
  • Restreignez l'accès en lecture aux fichiers de configuration, aux sauvegardes et aux logs afin que la valeur stockée ne soit pas exposée sans précaution.
  • Faites tourner tout identifiant qui a déjà été stocké en base64, car il doit être considéré comme déjà divulgué.

Solution complète

Les membres Pro et Max débloquent la solution complète étape par étape.

Passer Pro

Statistiques de la communauté

177 résolutions
89% taux de réussite
Hope Premier sang

Hacks du jour associés

22 000+ Hackers 100+ Labs & Cours Gratuit
Commencer Gratuitement