Aller au contenu
bughunter.pro

À quoi ressemble un rapport de pentest ? Un exemple complet.

Personne ne devrait acheter un audit sans savoir à quoi ressemble le livrable. Cette page reprend la structure exacte du PDF que nous remettons en fin de mission : mêmes sections, même niveau de détail. Seul le contenu change, puisqu'il est ici recomposé et anonymisé.

En bref

  • FormatUn PDF, remis en français ou en anglais, chiffré si vous le souhaitez.
  • Deux lecteursUne synthèse lisible sans bagage technique pour la direction, et un détail technique exploitable par vos développeurs.
  • Par vulnérabilitéL'impact réel, la preuve rejouable pas à pas, et le correctif attendu.
  • Après correctionLe retest met à jour le statut de chaque vulnérabilité, sous 60 jours.

Un rapport, deux lecteurs.

La direction veut savoir ce qu'elle risque et par quoi commencer. L'équipe technique veut la requête à rejouer et la ligne à corriger. Quand le rapport n'est écrit que pour l'un des deux, les corrections traînent.

C'est pour ça que la synthèse exécutive est écrite sans jargon, avec un lexique quand un terme ne peut pas être évité, et que le détail technique vient après, complet, avec les requêtes brutes. Les deux sont dans le même document.

La sévérité, elle, n'est pas un score sorti d'un outil. Chaque vulnérabilité porte un vectorisé, mais la priorité tient compte de ce que la faille permet chez vous. Une critique sur un environnement de préproduction isolé ne se traite pas comme une élevée sur le service qui porte vos paiements.

Un seul document. La synthèse s'adresse à la direction, le détail technique aux développeurs.

Les huit sections, dans l'ordre.

Le sommaire est toujours le même, quelle que soit la mission. Vous savez où chercher avant d'avoir ouvert le document.

  1. 01

    Cadre de l'intervention

    La cible exacte, l'autorisation écrite qui couvre le test, les dates, la durée, la méthode et l'outillage employés. On y trouve aussi une déclaration de ce qui a été touché : comptes de test créés puis supprimés, modifications réversibles, données de tiers masquées. Rien n'est laissé derrière.

  2. 02

    Synthèse exécutive

    Ce qui est bien protégé, ce qui pose problème, les risques principaux et l'ordre d'action recommandé. Écrite pour être lue par une direction, sans bagage technique, avec un lexique des termes qui ne peuvent pas être traduits.

  3. 03

    Synthèse des vulnérabilités

    Le tableau récapitulatif : un numéro, une gravité, le composant touché, la vulnérabilité, l'impact et le statut. Une page pour tout voir, et le point d'entrée vers le détail.

  4. 04

    Détail des vulnérabilités

    Pour chaque faille : gravité et CVSS vectorisé, description précise du défaut, preuve de reproduction avec les requêtes brutes, impact démontré, prérequis, remédiation numérotée et statut.

  5. 05

    Points positifs

    Ce qui tient. Beaucoup de rapports ne listent que les problèmes, ce qui donne une image fausse d'un système parfois globalement sain. Savoir ce qui est déjà solide évite de remettre en cause ce qui n'a pas à l'être.

  6. 06

    Recommandations non bloquantes

    Les durcissements qui n'entrent pas dans la liste des vulnérabilités mais qui réduisent la surface : en-têtes, configuration, journalisation, limitation de débit. Séparés du reste pour ne pas noyer les priorités.

  7. 07

    Retest

    Le résultat de la reprise des tests après vos correctifs, pour chaque faille, avec la date et ce qui a été constaté. C'est la section qui transforme une liste de problèmes en un dossier clos, et elle est ajoutée dans une version 1.1 du rapport.

  8. 08

    Annexes

    Les requêtes complètes et les preuves, rassemblées à part pour que le corps du rapport reste lisible. Les captures et les accès sensibles sont conservés séparément et transmis par canal chiffré, jamais collés dans le document.

Le tableau de synthèse.

Extrait recomposé. Chaque ligne renvoie au détail de la faille, dans la section suivante du rapport.

bughunter.pro3. Synthèse des vulnérabilités, v1.1
Exemple de tableau de synthèse des vulnérabilités
N°GravitéComposantVulnérabilitéImpactStatut
4.1Critiqueapi.exemple.fr/v1/orders/{id}Contrôle d'accès objet absent (BOLA) sur la lecture des commandesLecture de la commande de n'importe quel client à partir de son seul identifiantCorrigée
4.2Élevéeapi.exemple.fr/v1/accountChamp role accepté en écriture (mass assignment)Un compte standard se promeut administrateur en une requêteCorrigée
4.3Élevéewww.exemple.fr, réinitialisationJeton de réinitialisation sans expirationUn lien intercepté reste utilisable des semaines plus tardCorrigée
4.4Moyennewww.exemple.fr, connexionAucune limitation du nombre de tentatives d'authentificationRejeu à grande échelle d'identifiants issus de fuites publiquesCorrigée

Une vulnérabilité, en détail.

Voici le détail complet de la ligne 4.1 du tableau ci-dessus. C'est le niveau de détail que reçoit votre équipe technique, pour chaque faille.

bughunter.pro4. Détail des vulnérabilités

4.1Lecture des commandes de tout client sans autorisation

Critique
Gravité

Critique,  : 6.5
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Composant

GET /v1/orders/{id} sur api.exemple.fr

Description

L'API vérifie que l'appelant est authentifié, mais pas que la commande demandée lui appartient. L'identifiant est un entier séquentiel transmis dans l'URL. Un client authentifié qui remplace son propre identifiant par celui d'un autre reçoit la commande complète : nom, adresse de livraison, téléphone, lignes de commande et montant. Le serveur répond 200 dans les deux cas.

Preuve de reproduction
GET /v1/orders/4172 HTTP/1.1Host: api.exemple.frAuthorization: Bearer <jeton du compte de test> HTTP/1.1 200 OK{"id":4172,"customer":"compte de test","total":"149.90", ...} GET /v1/orders/4173 HTTP/1.1Host: api.exemple.frAuthorization: Bearer <le même jeton> HTTP/1.1 200 OK{"id":4173,"customer":"un autre client","total":"318.00", ...}
Impact

Impact démontré en lecture. Les identifiants étant séquentiels, l'énumération est triviale et automatisable : l'intégralité de l'historique de commandes est récupérable avec un seul compte client légitime. Les données concernées sont des données personnelles au sens du RGPD (article 4). Une exploitation avérée constituerait une violation à notifier à la CNIL sous 72 heures (article 33). Aucune écriture n'a été tentée.

Prérequis

Un compte client standard, créé librement depuis le site. Aucune élévation de privilège préalable, aucune interaction d'une victime.

Remédiation
  1. Vérifier côté serveur, sur cette route et sur toutes les routes qui prennent un identifiant d'objet, que l'objet demandé appartient bien à l'utilisateur de la session.
  2. Traiter le contrôle d'accès dans une couche commune plutôt que dans chaque route, pour que l'oubli ne soit plus possible.
  3. Remplacer les identifiants séquentiels par des identifiants non devinables (). Mesure de défense en profondeur, pas un correctif à elle seule.
  4. Auditer les journaux d'accès à la recherche d'énumérations passées sur cette route.
Statut

Corrigé par le client, puis vérifié au retest. Le retest est inclus dans la mission : aucune vulnérabilité n'est marquée « corrigée » sans avoir été vérifiée.

Corrigé et retesté

Ce que le rapport ne contient pas.

Autant que ce qu'il contient, ce qui en est volontairement absent fait partie de l'engagement.

  • Aucune donnée réelle de vos clients

    Les preuves sont tronquées et masquées, les jeux de données extraits ne sont jamais recopiés dans le document.

  • Aucun identifiant actif

    Ce qui doit être transmis passe par un canal chiffré, séparément du rapport. Et si de vrais identifiants de vos comptes ont fuité et que nous tombons dessus pendant la mission, nous vous prévenons aussitôt pour que vous les changiez.

  • Aucun remplissage

    Pas de sortie brute d'outil recopiée, pas de vulnérabilité théorique non vérifiée pour gonfler le total.

  • Aucune diffusion

    Le rapport vous appartient. Nous ne le partageons avec personne et nous ne citons jamais le nom d'un client.

Un rapport comme celui-ci, pour votre entreprise.

Décrivez-nous le périmètre et nous vous répondons avec un cadrage et un devis. Premier échange sans engagement.