Livrable fictif sur AcmeFictio SAS, éditeur SaaS B2B. Vous y trouvez la cartographie d'exposition publique, 12 observations classées par niveau d'attention, la lecture des risques métier et la recommandation cadrée GO ou NO-GO pour un pentest.
Un diagnostic n'est pas un scan automatisé. C'est une lecture experte de votre surface publique, par un pentester senior, sur 4 à 8 heures cumulées. Le livrable doit être lisible par votre direction, exploitable par votre équipe technique, et défendable face à un tiers (assureur, client, comité).
Cartographie publique de votre surface
Les sous-domaines, services exposés, certificats, en-têtes et fingerprints détectés depuis Internet, sans rien toucher à votre infrastructure.
Observations classées par niveau d'attention
Pas de score CVSS (pas d'exploitation), mais un classement clair : ce qui justifie un pentest, ce qui se corrige sans, ce qui est informatif.
Lecture des risques métier
Croisement entre les observations techniques et les enjeux business : fuite inter-tenants, compromission de compte, image, conformité, audit fournisseur.
Recommandation GO ou NO-GO pour un pentest
Avis tiers indépendant : faut-il déclencher un pentest, sur quel périmètre, avec quelle fourchette budgétaire, sous quels délais.
Pièce documentaire défendable
Livrable horodaté signé d'un pentester senior, recevable face à un assureur cyber ou un comité de souscription, utilisable dans un questionnaire fournisseur NIS2.
Sommaire type
Structure du livrable, section par section
Chaque diagnostic suit la même charpente pour faciliter la lecture d'une année sur l'autre et la comparaison de votre posture.
1. Synthèse exécutive
Verdict en une phrase et niveau d'exposition (A à F)
Message dirigeant en clair, sans jargon
Indicateurs principaux (actifs, observations, à investiguer)
Six observations commentées (sur les douze du livrable complet)
Trois observations à niveau d'attention élevé, qui justifient un pentest. Trois à niveau moyen, qui se corrigent sans pentest. Le PDF complet contient également les 6 observations restantes (faibles et informatives) et la recommandation cadrée pentest.
O-01Attention élevéExposition réseauÀ investiguer en pentest
Préproductions exposées sans restriction visible
Ce qu'on a vu
staging.acmefictio.example et qa.acmefictio.example répondent en HTTP 200 sans page d'authentification, sans bandeau de pré-production, sans restriction IP visible. Structure identique à la production.
Pourquoi c'est noté
Un attaquant non authentifié peut explorer une version potentiellement moins durcie, contenant les mêmes endpoints, parfois avec des feature flags expérimentaux actifs ou des comptes de test prévisibles.
Recommandation court terme
Restreindre par IP (whitelist VPN équipe), Basic Auth, ou bastion d'accès, avant tout pentest pour éviter qu'un autre acteur ne brûle la surface.
Orientation pentest
À inclure au périmètre boîte grise pour valider l'absence de divergence avec la production.
O-02Attention élevéAPIÀ investiguer en pentest
API REST, schéma OpenAPI partiellement public
Ce qu'on a vu
GET /api/v1/openapi.json renvoie une description de 41 routes, dont plusieurs candidats classiques pour BOLA et BOPLA (documents/{id}, invoices/{id}, tenants/{id}/users).
Pourquoi c'est noté
Le schéma rend la structure interne lisible sans authentification. Côté défense, c'est un signal de maturité. Côté attaque, c'est un raccourci pour cibler les défauts d'autorisation.
Recommandation court terme
Vérifier que le schéma public est intentionnel. Si oui, le documenter publiquement (transparence). Si non, restreindre à un usage authentifié.
Orientation pentest
Tester chaque route pour les classes d'autorisation OWASP API #1, #3 et #5.
O-03Attention élevéAuthentificationÀ investiguer en pentest
Reset password sur portail partenaire, énumération possible
Ce qu'on a vu
partners.acmefictio.example/auth/reset répond différemment selon que l'email saisi correspond à un compte existant ou non (champ JSON account_exists: true | false).
Pourquoi c'est noté
Cette différence permet d'énumérer la base d'emails partenaires depuis une liste OSINT (LinkedIn, sites d'entreprise), puis de cibler les comptes valides pour une attaque ultérieure.
Recommandation court terme
Unifier la réponse, même message, même délai, même statut HTTP, indépendamment de l'existence du compte. Renforcer le rate limiting sur ce flux.
Orientation pentest
Tester l'absence de bypass et la robustesse du rate limiting.
O-04Attention moyenConfiguration
En-têtes serveur révélateurs de versions obsolètes
Ce qu'on a vu
Server: nginx/1.20.1 sur legacy.acmefictio.example, X-Powered-By: PHP/7.4.33 sur blog.acmefictio.example. PHP 7.4 est en fin de support depuis novembre 2022.
Pourquoi c'est noté
Facilite le ciblage d'attaques connues (CVE publiques) et signale une maintenance technique en retard. Ce n'est pas une faille en soi, mais un signal lisible par un attaquant comme par un auditeur tiers.
Recommandation court terme
Désactiver server_tokens côté nginx, retirer expose_php côté WordPress, planifier la mise à niveau du parc PHP.
O-05Attention moyenConfiguration
Politique CSP absente ou très permissive sur 3 sous-domaines
Ce qu'on a vu
L'application principale tolère unsafe-inline et unsafe-eval. Le portail partenaire n'a pas de CSP du tout. Le blog est en Report-Only sans destination de report visible.
Pourquoi c'est noté
Ne crée pas de faille directe, mais réduit la marge de manœuvre en cas de XSS, et complique une certification PCI-DSS ou SOC2 si visée à terme.
Recommandation court terme
Définir une politique de base (default-src 'self'), élargir au cas par cas, avec un endpoint report-uri interne pour suivre les violations.
O-06Attention moyenConfiguration
Certificat TLS expiré depuis 47 jours sur legacy
Ce qu'on a vu
legacy.acmefictio.example répond toujours en HTTPS mais le certificat est expiré. Aucune redirection vers un service de remplacement, pas de message d'erreur métier.
Pourquoi c'est noté
Signal négatif lisible immédiatement par un client ou un auditeur. Suggère un actif oublié ou une équipe sous tension sur la rotation des certificats.
Recommandation court terme
Soit décommissionner le sous-domaine (recommandé si plus d'usage), soit basculer en certificat ACME automatisé (Let's Encrypt + script de renouvellement supervisé).
Méthodologie
Ce que veut dire « strictement passif »
Aucune intrusion, aucune authentification
On ne lance pas de scan, pas de bruteforce, pas de tentative d'authentification. Seul le trafic HTTP qu'un visiteur public produit naturellement.
Lecture de ce qui est déjà public
Passive DNS, registres de certificats (CT logs), réponses HTTP observées depuis un navigateur, métadonnées robots.txt et .well-known, sources OSINT pour le contexte organisation.
Vue d'un attaquant externe sans accès
Cette posture reflète exactement ce qu'un attaquant prépare avant de cibler. C'est la seule lecture pertinente avant d'engager un pentest, et elle ne nécessite aucune autorisation.
Aller plus loin
Le PDF d'exemple est public. Pour voir votre propre cartographie, le diagnostic est gratuit et restitué sous 48 à 72 heures. Pas de carte bancaire, pas d'obligation de pentest, refus assumé si la surface ne le justifie pas.
Tous les éléments présentés ci-dessus sont fictifs. Le client AcmeFictio SAS, les domaines en .example, les références d'observation et les recommandations sont fabriqués pour l'exemple. La méthodologie, la structure et la profondeur du livrable reflètent en revanche ce que vous recevez après un diagnostic Laucked réel.