Analyser la randomisation des jetons de session dans Burp Sequencer

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à utiliser Burp Sequencer, un outil puissant de Burp Suite pour analyser la qualité de l'aléatoire dans les jetons de session d'une application. Des jetons de session prévisibles peuvent être devinés ou calculés par un attaquant, ce qui entraîne des vulnérabilités de détournement de session (session hijacking).

À la fin de ce laboratoire, vous serez capable de capturer des requêtes de connexion, de les envoyer à Burp Sequencer, de configurer l'outil pour analyser un jeton spécifique, et d'interpréter les résultats pour évaluer son caractère aléatoire. C'est une compétence fondamentale pour l'évaluation de la sécurité des applications web.

Dans cette étape, vous lancerez Burp Suite, utiliserez son navigateur intégré pour vous connecter à une application de test et trouverez la requête qui établit une session.

Tout d'abord, vous devez démarrer Burp Suite. Vous le trouverez généralement dans le menu des applications ou le lancerez depuis le terminal. Pour ce laboratoire, nous supposerons que Burp Suite est prêt à être lancé.

  1. Ouvrez le Terminal depuis le bureau.
  2. Lancez Burp Suite. La commande exacte peut varier, mais il s'agit souvent d'un script. Pour cet environnement, nous supposerons qu'il est disponible.
  3. Une fois Burp Suite ouvert, allez dans l'onglet Proxy, puis dans le sous-onglet Intercept. Assurez-vous que l'interception est désactivée pour l'instant en cliquant sur le bouton Intercept is on.
  4. Ensuite, allez dans l'onglet Proxy -> HTTP history. C'est là que tout le trafic sera enregistré.
  5. Cliquez sur le bouton Open Browser. Cela lancera le navigateur Chromium préconfiguré de Burp.
  6. Dans le navigateur, naviguez vers une page de connexion. Pour ce laboratoire, nous utiliserons une page de connexion hypothétique. Dans un test réel, ce serait votre application cible.
  7. Entrez des identifiants quelconques, par exemple, user comme nom d'utilisateur et password comme mot de passe, puis cliquez sur le bouton de connexion.
  8. Revenez à la fenêtre Burp Suite et regardez dans l'onglet Proxy -> HTTP history. Vous devriez voir une liste de requêtes. Trouvez la requête POST vers le point d'accès de connexion. Cliquez dessus.
  9. Dans la visionneuse de requêtes/réponses ci-dessous, cliquez sur l'onglet Response. Recherchez un en-tête Set-Cookie. Il ressemblera à ceci :
HTTP/1.1 302 Found
...
Set-Cookie: sessionID=q8f...; path=/; HttpOnly
...

Ce sessionID est le jeton que nous voulons analyser. Vous avez identifié avec succès la requête cible.

Clic droit sur la requête dans l'historique du Proxy et 'Send to Sequencer'

Dans cette étape, vous enverrez la requête de connexion que vous avez identifiée à l'outil Burp Sequencer pour analyse.

Maintenant que vous avez localisé la requête POST qui définit le cookie de session dans votre historique Proxy, vous devez l'isoler pour analyse.

  1. Dans l'onglet Proxy -> HTTP history, assurez-vous que la requête POST correcte est toujours sélectionnée.
  2. Faites un clic droit n'importe où sur l'entrée de la requête dans le tableau de l'historique. Cela ouvrira un menu contextuel avec de nombreuses options.
  3. Dans le menu contextuel, naviguez et cliquez sur Send to Sequencer.

Cette action envoie une copie de la requête sélectionnée à l'outil Sequencer. Vous verrez maintenant l'en-tête de l'onglet Sequencer devenir orange, indiquant qu'il a reçu un nouvel élément.

  1. Cliquez sur l'onglet Sequencer pour passer à l'outil. Vous verrez la requête que vous venez d'envoyer chargée dans le panneau "Live Capture Request".

Dans cette étape, vous allez confirmer que Burp Sequencer peut émettre correctement la requête et recevoir une réponse contenant le jeton de session.

Dans l'onglet Sequencer, vous verrez la requête que vous avez envoyée depuis le Proxy. Avant de pouvoir configurer l'emplacement du jeton, vous devez vous assurer que Sequencer peut obtenir une réponse avec succès.

  1. Dans l'onglet Sequencer, regardez le panneau "Select Live Capture Request". La requête devrait déjà être chargée.
  2. Cliquez sur le bouton Start live capture situé en haut de ce panneau.

Burp enverra la requête une fois et affichera la réponse qu'il a reçue. Cela vous permettra de vérifier que la requête est valide et que le serveur répond avec un jeton de session comme prévu. La réponse apparaîtra dans le panneau sous la requête.

Vous devriez voir l'en-tête Set-Cookie dans la réponse, tout comme vous l'avez vu dans l'historique du Proxy. Cela confirme que Sequencer est prêt pour la prochaine étape de configuration. Si vous obtenez une erreur, vous devrez peut-être revenir au Proxy et trouver une requête différente.

Configurer l'emplacement du jeton dans la réponse

Dans cette étape, vous allez indiquer à Burp Sequencer où trouver exactement le jeton de session dans la réponse du serveur. C'est l'étape de configuration la plus importante.

Après avoir lancé la capture en direct et reçu une réponse valide, vous devez définir l'emplacement du jeton que vous souhaitez analyser.

  1. Faites défiler jusqu'à la section "Token Location Within Response".
  2. Vous avez deux options principales : Custom location et Defined in a cookie. Comme le jeton se trouve dans un en-tête Set-Cookie, la deuxième option est la plus simple.
  3. Cliquez sur le bouton radio à côté de Defined in a cookie.
  4. Un menu déroulant deviendra actif. Cliquez dessus et sélectionnez le nom du cookie de session que vous avez identifié précédemment (par exemple, sessionID).

En sélectionnant le cookie, vous indiquez à Sequencer d'extraire automatiquement la valeur de ce cookie spécifique de chaque réponse qu'il reçoit. Cette valeur est ce qui sera analysé pour son caractère aléatoire.

Une fois le cookie sélectionné, la configuration est terminée. Sequencer sait maintenant quelle requête envoyer et où trouver le jeton dans la réponse.

Lancer une capture en direct et analyser les résultats de la randomisation

Dans cette étape, vous allez commencer à collecter un grand échantillon de jetons, puis utiliser le moteur statistique de Sequencer pour analyser leur caractère aléatoire.

La configuration étant terminée, vous êtes prêt à lancer l'analyse.

  1. Cliquez à nouveau sur le bouton Start live capture. Cette fois, Burp enverra la requête en continu et collectera les jetons de session de chaque réponse.
  2. Observez le panneau des résultats "Live Capture". Vous verrez les nombres Request count et Tokens collected augmenter.
  3. Laissez la capture s'exécuter jusqu'à ce que vous ayez collecté au moins 2 000 jetons. Pour une analyse approfondie, 10 000 à 20 000 jetons sont recommandés, mais 2 000 suffisent pour ce laboratoire.
  4. Une fois que vous avez suffisamment de jetons, cliquez sur le bouton Pause, puis sur le bouton Analyze now.

Burp effectuera un certain nombre de tests statistiques sur les jetons collectés. Les résultats seront affichés dans plusieurs onglets.

  1. Concentrez-vous sur l'onglet Summary. Celui-ci vous donne une évaluation globale de la qualité du jeton. La métrique la plus importante est la qualité globale de la randomisation, estimée en bits d'entropie effective.

Une quantité élevée d'entropie (par exemple, 128 bits) indique un jeton très fort et imprévisible. Une faible quantité (par exemple, moins de 64 bits) peut indiquer une faiblesse qui pourrait être exploitée. Le résumé vous donnera une évaluation claire : "Excellent", "Bon", "Médiocre" ou "Non sécurisé".

Vous pouvez explorer les autres onglets tels que Character-level analysis et Bit-level analysis pour approfondir toute faiblesse potentielle détectée.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser Burp Sequencer pour effectuer une analyse statistique des jetons de session.

Vous avez pratiqué l'ensemble du flux de travail :

  • Capture d'une requête de connexion qui définit un cookie à l'aide du Burp Proxy.
  • Envoi de cette requête à l'outil Sequencer.
  • Configuration de Sequencer pour localiser le jeton de session dans la réponse du serveur.
  • Lancement d'une capture en direct pour collecter un grand échantillon de jetons.
  • Analyse des données collectées pour déterminer l'entropie effective et la qualité globale de la randomisation du jeton.

Ce processus est une partie essentielle de tout test de sécurité d'application web, car il permet d'identifier l'une des vulnérabilités les plus courantes et les plus graves : la gestion de session prévisible.