BurpSuite - Intercepter toutes les requêtes HTTP
Introduction sur l'un des outils de cyber-sécurité le plus utiliser dans le pentest
Dernière mise à jour
Introduction sur l'un des outils de cyber-sécurité le plus utiliser dans le pentest
Dernière mise à jour
Burp Suite est une suite d’outils développée en Java par la société PortSwigger Ltd. Il existe trois versions de Burpsuite : la version community (free), la version professional et la version enterprise (les deux dernières sont payantes et assez chères).
Pour ce qui est de l’installation je vous invite à lire la page d’installation du site officiel. Pour lancer l’outil, ouvrez un terminal et entrez cette commande: burpsuite
Cette page apparaîtra:
Cliquez sur « Next » puis sur « Start Burp ». Vous atterrirez sur la page principale de Burp:
Sur la barre du dessus vous avez les différents outils disponibles. Au cours de cet article nous verrons comment utiliser le proxy, le repeater, le spider, l’intruder et le decoder.
C’est l’outil le plus utilisé de la suite et pour cause, il nous permet d’intercepter toutes les requêtes envoyées depuis notre navigateur, de les modifier et de réceptionner la réponse du serveur. Pour cela il va falloir configurer notre navigateur pour qu’il envoie toutes les requêtes au Burp Proxy. Personnellement je travaille exclusivement sur Firefox donc je vais vous expliquer comment configurer ce navigateur.
Allez dans les «Paramètres» puis dans «Préférences» > «Avancés» et enfin «Réseau».
Cliquez sur « Paramètres » et complétez le panel de configuration de la façon suivante:
En faisant ça on dit juste à Firefox que nous voulons que toutes les requêtes soient envoyés au proxy qui tourne sur le localhost et qui écoute sur le port 8080.
Note : il existe plusieurs plugins pour Firefox et Chrome qui permettent de switcher la configuration des proxys. Pour ma part j’utilise le plugin Proxy SwitchyOmega disponible ici.
Voilà ! Notre Burp Proxy est configuré. Maintenant si vous lancez une requête sur Firefox vous allez recevoir une notification qui vous dit que la requête à été intercéé…
Oh wait ! On ne pourra pas se rendre sur des sites en HTTPS à cause des règles HSTS ! Eh oui, nous essayons de contacter le site http://www.facebook.com mais le certificat que nous recevons est celui de Burpsuite donc notre navigateur bloque la connexion!
Pour régler ce problème on va devoir télécharger le certificat d’autorité de Burp et l’installer dans Firefox. Pour cela rendez vous ici en ayant le proxy activé. Puis cliquez sur CA Certificate et téléchargez le certificat.
Maintenant rendez vous dans l’onglet « Avancées » puis « Certificats » dans les paramètres Firefox. Cliquez sur «Voir les certificats». Un onglet va s’ouvrir, allez dans «Autorités»:
Cliquez sur « Importer » puis sélectionnez le certificat que vous avez téléchargé tout à l’heure. Pour finir cochez «Faire confiance à ce CA pour identifier les sites web»:
A partir de là vous ne devriez plus avoir de problèmes. Les requêtes HTTP et HTTPS seront captées par Burp et vous pourrez les modifier.
Problèmes encore, si vous êtes en train de tester les sécurités d’un site en écoutant de la musique sur YouTube vous allez recevoir les requêtes du site que vous testez et celles venant de YouTube (et YouTube va vous flooooooder au max). Donc on va voir comment restreindre notre scope à un ou plusieurs sites. Pour cela allez dans l’onglet « Target » sur Burp Suite:
Sur la gauche vous avez tous les sites pour lesquels des requêtes ont été réceptionnées par Burp.
Attention, pour que le site apparaisse il faut que vous vous y soyez rendus avec le proxy actif.
Si vous voulez que Burp ne se concentre que sur un site il faudra le sélectionner, faire un clic droit et cliquez sur «Add to scope». Ensuite retournez dans la section proxy puis « Options » et modifier les règles d’interception comme ceci:
Voilà! Les seuls requêtes que vous recevrez seront celles que vous avez placé dans votre scope.
Une fois que vous avez intercepté une requête, burp vous affichera son contenu:
Vous pouvez tout modifier. Absolument tout et comment bon vous semble. Ensuite vous n’avez plus qu’à la forwarder (i.e : l’envoyer au serveur) et si vous voulez réceptionner la réponse du serveur il vous suffira de cliquer sur «Action» puis sur «Do intercept > Response to this request».
Bon c’est cool, on intercepte, modifie et renvoie des requêtes mais n’y aurait-il pas moyen de rejouer une requête sans avoir à se retaper toutes ces actions ? Eh bien si, la suite burp propose un outil qui permet de rejouer une requête très simplement: Repeater.
Burp Repeater c’est clairement là où vous passerait le plus de temps. Par défaut il n’y a rien dans cet onglet et c'est tout à fait normal puisque c’est à vous de dire quelle requête vous voulez envoyer dans le repeater. Pour cela choisissez une requête dans le proxy, cliquez sur « Action » puis « Send to Repeater » puis rendez vous dans la section Repeater et … Tadaa:
Maintenant vous pouvez modifier votre requête puis l’envoyer. Vous obtiendrez la réponse du serveur automatiquement:
Pour ma part je me sers de cet outil quand j’ai déjà repéré une faille et que je chercher à l’exploiter au mieux ou encore lorsque je fuzz des paramètres afin d’analyser le fonctionnement de l’application.
Burp Spider est un outil bien sympas puisqu’il permet de mapper un site. C’est en fait un scanner qui va parcourir tous les liens qu’il trouve sur le site web que vous lui avez spécifié.
Pour le lancer c’est très simple, rendez vous dans l’onglet Target, sélectionner le site que vous voulez mapper, clic droit > Spider This Host. Vous trouverez les résultats du scan dans l’onglet Site Map :
Ensuite c’est à vous de faire l’analyse des liens. Certains peuvent être intéressants dans le cadre d’une exploitation!
Le dernier outil que je trouve intéressant c’est le burp decoder. Il permet très rapidement d’encoder/décoder une chaîne de caractères (on s’en sert beaucoup pour bypass des filtres par exemple):
Je ne vais pas vous expliquer comment il fonctionne, je pense que c’est assez explicite
Tutoriel original de www.pentestgeek.com
Burp Suite de Portswigger est l'un de mes outils préférés à utiliser lors de l'exécution d'un test de pénétration Web. Ce qui suit est un tutoriel Burp Suite étape par étape. Je vais vous montrer comment configurer et utiliser correctement de nombreuses fonctionnalités de Burp Suite. Après avoir lu ceci, vous devriez pouvoir effectuer un test de pénétration Web approfondi. Ce sera le premier d'une série d'articles en deux parties.
Comment utiliser Burp Suite - Test de pénétration Web (Partie 1)
Configuration du proxy SOCKS sortant
Configurer le comportement d'interception
Procédure d'application
Rechercher des mots clés spécifiques
Utilisation de Spider et Discover
Utilisation de l'onglet Répéteur
Utilisation de l'onglet Intruder
Utilisation du Scan Automatique
Comment utiliser Burp Suite - Test de pénétration Web (Partie 2)
Validation des résultats du scanner
Exportation des rapports de scanner
Analyse des résultats XML
Enregistrement d'une session Burp
Burp Extensions
Fin de la partie 2
Avis de non-responsabilité: tester des applications Web que vous n'avez pas l'autorisation écrite de tester est illégal et punissable par la loi
Selon l'étendue de votre engagement, il peut être nécessaire de tunneler votre trafic Burp Suite via un proxy SOCKS sortant. Cela garantit que le trafic de test provient de votre environnement de test approuvé. Je préfère utiliser une simple connexion SSH qui fonctionne bien à cet effet. Connectez-vous à votre serveur de test et configurez un proxy SOCKS sur votre hôte local via l'option ‘–D’ comme celle-ci.
Accédez à l'onglet Options situé à l'extrême droite du menu supérieur dans Burp Suite. Dans le sous-onglet Connections
, faites défiler jusqu'à la troisième section intitulée SOCKS Proxy
. Tapez localhost pour l'option hôte et 9292 pour l'option port.
Désormais, Burp Suite est configuré pour acheminer le trafic via votre tunnel SSH sortant. Configurez les paramètres proxy de votre navigateur pour utiliser Burp Suite. Accédez à www.whatismyip.com et assurez-vous que votre adresse IP provient de votre environnement de test.
Conseil: J'utilise un navigateur séparé pour les tests d'applications Web. Cela garantit que je ne transmets accidentellement aucune donnée personnelle à l'un des sites de mes clients, comme le mot de passe de mon compte gmail par exemple.
Je préfère également utiliser un module complémentaire de commutation de proxy tel que SwitchySharp. Cela me permet de basculer facilement entre les différentes configurations de proxy dont je pourrais avoir besoin lors de différents engagements. Voici à quoi ressemblent mes paramètres de configuration pour Burp Suite.
La prochaine chose que je fais est de configurer la fonction d'interception du proxy. Réglez-le pour ne suspendre que les demandes et réponses en provenance et à destination du site cible. Accédez à l'onglet Proxy
sous le sous-onglet Options
. Les deuxième et troisième en-têtes affichent les options configurables pour intercepter les demandes et les réponses. Décochez les paramètres par défaut de Burp Suite et cochez URL Is in target scope
(L'URL est dans la portée cible). Désactivez ensuite l'interception car elle n'est pas nécessaire pour la procédure pas à pas initiale de l'application. Dans le sous-onglet Intercept
, assurez-vous que le bouton à bascule indique Intercept is off
Bizarrement , beaucoup de gens aiment sauter cette étape. Je ne le recommande pas. Au cours de la procédure pas à pas initiale de votre application cible, il est important de cliquer manuellement sur autant de sites que possible. Essayez de résister à l'envie de commencer à analyser les choses dans Burp Suite correctement. Au lieu de cela, passez un bon moment et cliquez sur chaque lien et affichez chaque page. Tout comme un utilisateur normal pourrait le faire. Pensez au fonctionnement du site ou à son fonctionnement supposé
Vous devriez penser aux questions suivantes:
Si vous tombez sur des formulaires de saisie, assurez-vous de faire quelques tests manuels. Saisie d'une seule coche et appuyez sur soumettre sur n'importe quel formulaire de recherche ou champ de code postal que vous rencontrez. Vous pourriez être surpris de voir à quelle fréquence les failles de sécurité sont découvertes par une exploration curieuse et non par une analyse automatisée.
Maintenant que vous avez une bonne idée du fonctionnement de votre application cible, il est temps de commencer à analyser certains GETs et publications. Cependant, avant de faire des tests avec Burp Suite, il est judicieux de définir correctement votre portée cible. Cela garantira que vous n'envoyez pas de trafic potentiellement malveillant vers des sites Web que vous n'êtes pas autorisé à tester.
Conseil: Je suis autorisé à tester www.pentestgeek.com Tu ne l'es pas.
Rendez-vous sur l'onglet Target
puis sur le sous-onglet Site map
. Sélectionnez votre site Web cible dans le volet d'affichage de gauche. Faites un clic droit et choisissez Add to scope
. Sélectionnez ensuite tous les autres sites dans le volet d'affichage, cliquez avec le bouton droit et sélectionnez Supprimer de la portée. Si vous l'avez fait correctement, votre onglet de portée Burp Suite devrait ressembler à l'image ci-dessous.
Cliquez sur l'onglet Target
et le sous-onglet Site Map
. Faites défiler jusqu'à la branche de site appropriée et développez toutes les flèches jusqu'à ce que vous obteniez une image complète de votre site cible. Cela devrait inclure toutes les pages individuelles que vous avez consultées ainsi que tous les fichiers javascript et css. Prenez un moment pour vous imprégner de tout cela, essayez de repérer les fichiers que vous ne reconnaissez pas dans la procédure manuelle. Vous pouvez utiliser Burp Suite pour afficher la réponse de chaque demande dans un certain nombre de formats différents situés sur l'onglet Resposne
du volet d'affichage en bas à droite. Parcourez chaque réponse en recherchant des données intéressantes. Vous pourriez être surpris de découvrir:
Vous pouvez également tirer parti de Burp Suite pour faire une grosse partie du travail à votre place. Faites un clic droit sur un nœud, dans le sous-menu Engagement tools
, sélectionnez Search
. L'une de mes préférées consiste à rechercher la chaîne set-cookie
. Cela vous permet de savoir quelles pages sont suffisamment intéressantes pour nécessiter un cookie unique. Les cookies sont couramment utilisés par les développeurs d'applications Web pour différencier les demandes d'utilisateurs de plusieurs sites. Cela garantit que l’utilisateur A n’a pas accès aux informations appartenant à l’utilisateur B. Pour cette raison, il est judicieux d'identifier ces pages et d'y porter une attention particulière.
Après un peu de piquer et de pousser manuelle, il est généralement avantageux de permettre à Burp Suite de contrôler l'hôte. Faites un clic droit sur la branche racine de la cible dans le Target
(plan du site) et sélectionnez Spider this host
.
Une fois Spider
terminée, revenez à votre plan du site et voyez si vous avez ramassé de nouvelles pages. Si c'est le cas, jetez-y un œil manuel dans votre navigateur et également dans Burp Suite pour voir s'ils produisent quelque chose d'intéressant. Existe-t-il de nouvelles invites de connexion ou des zones de saisie par exemple? Si vous n'êtes toujours pas satisfait de tout ce que vous avez trouvé, vous pouvez essayer le module de découverte de Burp Suite. Cliquez avec le bouton droit sur la branche racine du site cible et dans le sous-menu Engagement tools
, sélectionnez Discover Conten
. Sur la plupart des sites, ce module peut fonctionner et fonctionnera longtemps. Il est donc recommandé de le surveiller. Assurez-vous qu'il se termine ou arrêtez-le manuellement avant de l'exécuter trop longtemps.
L'onglet Répéteur est sans doute l'une des fonctionnalités les plus utiles de Burp Suite. Je l'utilise des centaines de fois sur chaque application web que je teste. Il est extrêmement précieux et incroyablement simple à utiliser. Faites un clic droit sur n'importe quelle demande dans l'onglet Target
ou Proxy
et sélectionnez Send to Repeater
. Ensuite, cliquez sur l'onglet Repeater
et appuyez sur Go
. Vous verrez quelque chose comme ça:
Si vous êtes limité dans le temps et avez trop de demandes et de paramètres individuels pour effectuer un test manuel approfondi. Le Burp Suite Intruder est un moyen vraiment génial et puissant d'effectuer un fuzzing automatisé et semi-ciblé. Vous pouvez l'utiliser contre un ou plusieurs paramètres dans une requête HTTP. Faites un clic droit sur une demande comme nous l'avons fait auparavant et cette fois sélectionnez Send to Intruder
. Rendez-vous sur l'onglet Intruder
et cliquez sur le sous-onglet Positions
. Vous devriez voir quelque chose comme ça:
Je recommande d'utiliser le bouton Clear
pour supprimer ce qui est sélectionné au départ. Le comportement par défaut consiste à tout tester avec un signe =. Mettez en surbrillance les paramètres que vous ne souhaitez pas utiliser et cliquez sur Add
. Ensuite, vous devez aller dans le sous-onglet Payloads
et indiquer à Burp Suite quels cas de test effectuer pendant le fuzzing. Un bon point de départ est Fuzzing-full
. cela enverra un certain nombre de test de base à chaque paramètre que vous avez mis en évidence dans le sous-onglet Positions
.
La dernière chose que je fais lors du test d'une application Web est d'effectuer une analyse automatisée à l'aide de Burp Suite. De retour sur votre sous-onglet Site Map
, faites un clic droit sur la branche racine de votre site cible et sélectionnez Passively scan this host
(Scanner passivement cet hôte). Cela analysera chaque demande et réponse que vous avez générée pendant votre session Burp Suite. Il produira un conseille de vulnérabilité sur le sous-onglet Résults
situé sur l'onglet Scanner
. J'aime faire l'analyse passive en premier car elle n'envoie aucun trafic au serveur cible. Vous pouvez également configurer Burp Suite pour analyser passivement les demandes et les réponses automatiquement dans le sous-onglet Live scanning
(Analyse en direct). Vous pouvez également le faire pour la numérisation active, mais je ne le recommande pas.
Lors d'une analyse active, j'aime utiliser les paramètres suivants:
Tutoriel original de www.pentestgeek.com
Dans la première partie du tutoriel Burp Suite, nous avons présenté certaines des fonctionnalités utiles que Burp Suite a à offrir lors de l'exécution d'un test de pénétration d'application Web. Dans la partie 2 de cette série, nous continuerons d'explorer comment utiliser Burp Suite, notamment: la validation des résultats du scanner, l'exportation des rapports du scanner, l'analyse des résultats XML, l'enregistrement d'une session Burp et les extensions Burp. Allons droit au but!
C'est toujours une bonne idée de valider en profondeur les résultats de tout outil de numérisation automatisé. Burp Suite fournit tout ce dont vous avez besoin pour ce faire sur l'onglet Scanner/Results
. Cliquez sur un nœud dans le volet gauche pour voir les vulnérabilités identifiées associées à cette cible. Le volet inférieur droit affiche les informations détaillées de demande/réponse relatives à la vulnérabilité spécifique sélectionnée dans le volet supérieur droit.
L'onglet Advisory
contient des informations sur la vulnérabilité, y compris un détail de haut niveau, une description et une recommandation proposée. Les onglets Request
& Response
afficheront exactement ce que Burp Suite a envoyé à l'application cible afin de vérifier la vulnérabilité ainsi que ce qui a été renvoyé par l'application. Jetez un œil à l'exemple ci-dessous.
L'onglet de demande nous montre quelle page a généré l'alerte.
Juste en demandant cette page dans un navigateur, ou en consultant l'onglet Réponse
, nous sommes en mesure de valider que l'adresse e-mail prétendument divulguée était bien présente dans la réponse. Nous pouvons considérer cette question comme validée et aller de l'avant.
Conseil: Assurez-vous d'effectuer cette étape sur chaque vulnérabilité identifiée par le scanner. Tous les outils d'analyse automatisés produisent des faux positifs en raison de la nature des tests effectués. La plupart des entreprises sont capables d'acheter des outils et de les exécuter sur leurs réseaux. Des pentesters sont embauchés spécifiquement pour identifier et supprimer ces faux positifs.
Une fois que vous avez validé les résultats du scanner, vous souhaiterez peut-être générer un certain type de rapport. Il existe deux options de rapport disponibles dans l'onglet Scanner/Results
, HTML et XML. Pour générer un rapport, cliquez avec le bouton droit sur une cible dans le volet d'affichage de gauche et sélectionnez Report selected issues
. Cela vous présentera la boîte de dialogue suivante.
Cliquez sur l'Assistant et sélectionnez les éléments que vous souhaitez dans votre rapport et quel format. Le rapport HTML peut être ouvert dans un navigateur, puis exporté au format PDF, ce qui peut être utile pour aider à communiquer les résultats à votre client. Le rapport XML vous permet d'analyser des sections spécifiques d'un rapport pour plus de détails. Si vous générez un rapport XML, assurez-vous de décocher l'option d'encodeur Base64 pour voir les Request/Responses HTTP complètes.
J'ai écrit un simple script Ruby pour analyser les données de la sortie XML générée à partir d'un scan automatisé. Le script utilise la gem Nokogiri et génère les résultats dans un fichier CSV délimité par colonne qui peut être importé dans Excel pour produire une belle feuille de calcul. Si vous avez une compréhension de base de l'analyse des nœuds XML à l'aide de sélecteurs CSS, vous n'aurez aucun problème à modifier le script pour répondre à vos besoins spécifiques.
Vous pouvez voir qu'en appelant simplement la méthode .css et en passant [LA VALEUR QUE VOUS VOULEZ].text
en tant que paramètre, vous pourrez retirer tous les éléments spécifiques que vous souhaitez de la soupe XML. Exécutez le script sans argument et vous verrez qu'il prend un fichier XML et crache la sortie à l'écran.
Vous pouvez filtrer les résultats dans un fichier.csv si vous le souhaitez. Le fichier CSV peut ensuite être importé dans une feuille de calcul Excel qui ressemble à ceci.
Dans certains cas, il peut être nécessaire de suspendre une évaluation et de revenir plus tard. Vous pourriez également vous retrouver à vouloir partager votre session Burp Suite avec un autre consultant. Deux yeux valent souvent mieux qu'un après tout. Dans ces cas, la chose la plus simple à faire est d'enregistrer une copie locale de votre session. Sélectionnez simplement Save state
dans le menu Burp en haut. Cela va créer un fichier plat que vous ou un autre consultant pouvez importer dans Burp Suite et voir le trafic capturé et les points précis du test. Il s'agit d'une fonctionnalité extrêmement utile.
Si vous avez essayé de le faire dans le passé et que vous avez remarqué que la taille du fichier résultant était inutilement grande (des centaines de Mo). Il est possible que vous ayez oublié de cocher la case Save in-scope items only
Si vous configurez votre portée en suivant les instructions de la partie 1, vous ne devriez pas avoir à vous soucier d'un fichier d'état massif. La page suivante de l'Assistant vous demande de quels outils vous souhaitez stocker la configuration. J'ai trouvé que les avoir toutes cochées ou toutes non cochées ne semble pas affecter la taille du fichier, voire pas du tout, mais n'hésitez pas à jouer avec ces options et à vous faire votre propre opinion.
Pour restaurer un état de burp précédemment enregistré, sélectionnez simplement Restore state
dans le menu Burp en haut. Sélectionnez le fichier dans votre système, cliquez Open
et suivez les instructions de l'assistant. Selon la taille du fichier d'état, il peut prendre un moment pour tout importer, mais une fois terminé, vous pouvez continuer votre évaluation ou celle de quelqu'un d'autre pour ce sujet comme si vous n'aviez jamais fait de pause en premier lieu. C'est vraiment cool!
Les extensions Burp sont des ajouts après-vente écrits par d'autres pentesters qui peuvent être facilement installés et configurés pour ajouter des fonctionnalités améliorées ou supplémentaires à Burp Suite. Pour illustrer ce processus, nous allons télécharger et installer le Plugin Shellshock Burp
depuis la page Accuvant LABS Github. Accédez à l'URL suivante https://github.com/AccuvantLABS/burp-shellshock et cliquez sur le lien Download here!
Cliquez ensuite sur l'onglet Extender
dans Burp Suite et cliquez sur le bouton Add
dans le coin supérieur gauche. Lorsque la boîte de dialogue apparaît, sélectionnez le fichier .jar Shell Shock que vous venez de télécharger et cliquez sur Next
.
Si tout s'est bien passé, vous devriez voir un message indiquant The extension loaded successfully sans message d'erreur ni sortie. L'onglet Extensions montre maintenant que notre extension Shellshock Scanner
est chargée. Nous pouvons voir dans la section Détails qu'une nouvelle vérification du scanner a été ajoutée.
J'espère que ce tutoriel vous a été utile. Après avoir lu les deux articles de cette série, vous devez vous familiariser avec la plupart des fonctionnalités essentielles offertes dans la suite Burp. Veuillez profiter de la section Post Comment
pour laisser vos commentaires/questions. Merci d'avoir lu!
Source may 2020 : https://github.com/TeePee/BurpSuite-Utilisation
Source 3 mai 2020 : https://github.com/TeePee/BurpSuite-Utilisation