Rédiger le rapport — début du TP3
Vous n'attaquez plus. Vous livrez. Le TP3 s'amorce ici et se remet en semaine 14 : un PDF de 20 à 30 pages, six constats minimum, un plan à 3, 6 et 12 mois. Cette leçon vous donne la mission simulée, le squelette à remplir, et la grille que le correcteur utilisera — servez-vous-en avant d'envoyer.
Compter. 8 à 12 heures de rédaction, étalées sur deux semaines. La première séance (aujourd'hui) fige le plan, les six titres et les priorités. La seconde rédige. La troisième relit à voix haute le résumé.
Livrable. rapport-nordik-commerce.pdf, 20 à 30 pages, plus un dossier preuves/ nommé selon Cxx-AAAA-MM-JJ-….
La mission simulée ci-dessous et vos notes de laboratoire suffisent. Vous n'envoyez aucun paquet à une cible tierce. Vous n'ouvrez pas un scope « pour enrichir le rapport ». Rédiger un P1 inventé, ou ré-exploiter hors lab, est un zéro — et, hors lab, un délit.
Ce que vous saurez faire après cet atelier
- Assembler un rapport lu par la direction et par l'équipe technique.
- Trancher six priorités cohérentes (2 P1, 2 P2, 2 P3 ou plus) à partir de notes brutes.
- Remplir le gabarit de constat sans en oublier un champ.
- Proposer un plan de remédiation crédible à trois horizons.
- Vous noter vous-même avec la grille du TP3 avant la remise.
1. Ce qu'il vous faut
- Les leçons 12.1 et 12.2 lues. La fiche C-01 de la démonstration est le niveau, pas un constat à recopier tel quel (sauf si vous en faites l'un des six, en l'adaptant au client Nordik).
- Vos notes des modules 3 à 11, si vous voulez ancrer une preuve dans un lab que vous avez vraiment joué (Juice Shop
10.10.10.50:3000, DVWA, AD du module 9–10). - Un traitement de texte ou Markdown → PDF (Pandoc, Typora, Word, LibreOffice). Police lisible, titres numérotés, table des matières.
- Le carnet de la section 3. C'est la matière de la mission simulée.
2. Mission simulée — Nordik Commerce inc.
Vous rédigez comme si vous aviez mené la mission. Les faits ci-dessous sont réputés vrais. Vous n'en ajoutez pas d'autres, sauf preuve issue de votre lab et clairement étiquetée « illustration de laboratoire, même classe de défaut ».
Client : Nordik Commerce inc. (boutique en ligne, Montréal)
Commanditaire : Direction TI, Marie Tremblay
Type : grey-box, applicatif + périphérie d'identité
Dates : 14–18 avril 2026, 09:00–18:00 America/Toronto
Cible incluse : shop.nordik.example (lab : 10.10.10.50:3000)
vpn.nordik.example (port 443)
mail (Google Workspace, domaine nordik.example)
Cible exclue : prestataire Stripe, Atlassian Cloud, DoS, phishing
Comptes : un compte client `acheteur@nordik.example`
Extraction : au plus 5 lignes par table, pas de PII réelle hors lab
Méthode : OWASP Testing Guide v4.2 + contrôles identité (M05, M06)
2.1. Carnet de mission — huit notes brutes
Vous devez produire six constats. Le carnet en contient huit. Deux notes sont des pièges : trop faibles, doublon, ou hors périmètre. À vous de les écarter ou de les rétrograder en P4 dans la vue d'ensemble, sans en faire un P1 de remplissage.
Note A — Recherche catalogue
shop GET /rest/products/search?q=
q=apple' -> 500 SQLITE_ERROR
UNION -> table Users (3 lignes, RoE)
admin@juice-sh.op hash MD5 0192023a7bbd73250516f069df18b500 -> admin123
voir démonstration 12.2 / module 7 étape 3
Note B — Objet direct (IDOR)
GET /rest/basket/1 avec le cookie de acheteur@...
GET /rest/basket/2 même cookie -> 200, panier d'un autre client
lignes de commande, email, adresse
module 7, A01
Note C — XSS stockée, avis produit
commentaire produit : <img src=x onerror="…">
l'admin qui ouvre Modération exécute le JS
cookie de session admin visible (HttpOnly absent sur le cookie de lab)
module 7 étape 4
Note D — Politique DMARC
_dmarc.nordik.example TXT v=DMARC1; p=none; rua=mailto:dmarc@nordik.example
SPF présent include:_spf.google.com
phishing non autorisé par le RoE : on n'a PAS envoyé d'email
module 3 / module 6
Note E — Listing /assets/backups
GET /assets/backups/ -> 200 index of
dump-2023-11.sql (on n'a PAS téléchargé, RoE extraction)
dernier-modif 2023-11-02
Note F — Bandeau serveur
Server: nginx/1.18.0
X-Powered-By: Express
pas d'exploit lancé
Note G — VPN : certificat et portail
vpn.nordik.example TLS 1.2 OK
portail Forti-like, pas de MFA sur le compte de test fourni
password spraying NON fait (hors fenêtre)
compte test `vpn-invite` / `Nordik2024!` encore valide le 18 avril
Note H — Ticket Jira cité dans un commentaire HTML
<!-- fix NORDIK-1842 voir jira.nordik.example -->
jira.nordik.example -> Atlassian Cloud HORS PERIMETRE
on n'a pas authentifié
2.2. Ce que le correcteur attend comme répartition
| Priorité | Quota | Notes qui peuvent y aller | Notes qui n'y vont pas |
|---|---|---|---|
| P1 | 2 | A (SQLi admin), B (IDOR paniers) ou C si vol de session admin démontré | F, H |
| P2 | 2 | C (si pas déjà P1), G (compte VPN faible sans MFA), éventuellement E si le dump est argumenté | F |
| P3+ | 2 | D (DMARC p=none sans phishing réel), E (listing), G si vous avez déjà deux P2 plus forts | A rétrogradé « parce que c'est un lab » |
La note F n'est pas un constat P2. Elle peut figurer en P4 ou dans la vue d'ensemble (« versions exposées »). La note H n'est pas un constat d'intrusion Atlassian : hors périmètre. Vous la mentionnez en limite : signalement au client, pas de test.
Vous pouvez remplacer une note par un constat équivalent tiré de votre lab (EternalBlue du module 5, Kerberoast du module 9) à condition de garder la répartition 2 / 2 / 2 et le gabarit.
3. Budget de pages — viser 24, pas 19 ni 41
| Partie | Pages | Ce qui fait déraper |
|---|---|---|
| Page de garde + diffusion | 1 | Logos, mentions NDA |
| Résumé exécutif | 1–2 | Jargon, historique jour par jour |
| Périmètre et méthode | 2 | Copier-coller du RoE entier en corps |
| Vue d'ensemble | 2 | Roman d'attaque de six pages |
| Six constats | 10–14 | JSON complet dans chaque fiche |
| Recommandations 3 / 6 / 12 mois | 2–3 | Répéter les fiches mot pour mot |
| Annexes | 3–6 | Export Nmap de 40 pages |
Moins de 20 pages : il manque soit une fiche, soit les preuves, soit le plan. Plus de 30 : vous avez collé des outils. Coupez les annexes, pas les justifications P1.
4. Squelette de rapport — à recopier puis à remplir
Le cadre extérieur utilise quatre accents graves : le squelette contient lui-même des blocs de preuve. Recopiez dans ~/mission/rapport-nordik.md, puis exportez en PDF.
# Rapport de test d'intrusion
## Nordik Commerce inc. — boutique `shop.nordik.example`
| Champ | Valeur |
| --- | --- |
| Référence | NORDIK-PT-2026-04 |
| Classification | Confidentiel — diffusion limitée |
| Version | 1.0 |
| Dates de test | 14–18 avril 2026 |
| Date du rapport | 22 avril 2026 |
| Rédacteur | `votre-nom` |
| Destinataire | Marie Tremblay, Direction TI |
Liste de diffusion : commanditaire, RSSI, responsable applicatif.
Pas de transfert hors NDA.
---
## 1. Résumé exécutif
*(Rédiger EN DERNIER. 1 à 2 pages. Conclusion dès la première phrase.)*
**Posture.** `insuffisante | acceptable avec réserves | maîtrisée` —
`une phrase qui cite le nombre de P1`.
**Périmètre en une phrase.** Grey-box, boutique et portail VPN, hors Stripe
et Atlassian, hors déni de service et hors hameçonnage.
**Comptage.**
| P1 | P2 | P3 | P4 |
| --- | --- | --- | --- |
| 2 | 2 | 2 | `n` |
**Trois risques que la direction peut répéter.**
1. `phrase métier` (C-0x)
2. `phrase métier` (C-0x)
3. `phrase métier` (C-0x)
**Décisions de la semaine.**
1. `rotation, fermeture, mise hors ligne`
2. `…`
3. `…`
Pas d'outil, pas de CVE, pas de capture ici.
---
## 2. Périmètre et méthodologie
### 2.1. Inclus / exclu
| Inclus | Exclu |
| --- | --- |
| `shop.nordik.example` (lab 10.10.10.50:3000) | Stripe, Jira Cloud |
| `vpn.nordik.example` | DoS, phishing actif |
| Compte client fourni | Filiales, wifi, physique |
### 2.2. Rules of Engagement
Fenêtres 09:00–18:00 America/Toronto. Extraction ≤ 5 lignes.
Pas de modification de commandes réelles. Escalade : Marie Tremblay.
### 2.3. Méthode et outils
OWASP Testing Guide v4.2. Burp Suite (Repeater), `curl`, `sqlmap`
(confirmation, `--stop=3`), `dig` (DMARC). Chaque outil a un rôle ;
aucun export brut n'est un constat.
### 2.4. Limites
`ce qui n'a pas été testé : API admin sans compte, phishing, Atlassian.`
Ces limites **réduisent** la confiance : une absence de P1 ailleurs
n'est pas une attestation de sécurité.
---
## 3. Vue d'ensemble
### 3.1. Carte de chaleur
| Thème | P1 | P2 | P3 | P4 |
| --- | --- | --- | --- | --- |
| Applicatif | `n` | `n` | `n` | `n` |
| Identité | `n` | `n` | `n` | `n` |
| Réseau / VPN | `n` | `n` | `n` | `n` |
| Messagerie | `n` | `n` | `n` | `n` |
### 3.2. Indicateur de posture
`Une phrase. Ex. : insuffisante — deux P1 depuis Internet sans privilège.`
### 3.3. Chemin d'attaque (un paragraphe)
Relier les fiches : recherche publique → compte admin → session ;
ou panier IDOR → données d'un tiers. Ne pas inventer un pivot AD
si vous n'avez pas les notes.
---
## 4. Constats détaillés
Chaque fiche : titre, sévérité (P + CVSS + justification), contexte,
preuve, impact métier, remédiation (action, test, effort), références.
### C-01 — `titre action + surface`
**Sévérité.** P`x`. CVSS 3.1 : `score` — `vecteur`.
Justification métier : `une phrase`.
**Contexte.** `une phrase fonctionnelle`.
**Preuve.** Date, cible, limite d'extraction.
```bash
curl -sS -G 'http://10.10.10.50:3000/rest/products/search' \
--data-urlencode "q=…"
```
```http
HTTP/1.1 200 OK
Content-Type: application/json
```
Capture : `C01-2026-04-16-….png` (annexe A).
**Impact métier.** `déjà démontré, pas un scénario`.
**Remédiation.**
1. Immédiat :
2. Correctif :
3. Compensation :
4. Test de clôture : `la même preuve, résultat attendu différent`.
Effort : `jours-personnes, rôle`.
**Références.** CWE-…, OWASP …, CVE si elle existe.
### C-02 — `…`
*(même gabarit)*
### C-03 — `…`
### C-04 — `…`
### C-05 — `…`
### C-06 — `…`
---
## 5. Recommandations priorisées
Regrouper par thème, pas par numéro de fiche. Une action peut fermer
deux constats (toutes les requêtes SQL paramétrées = C-01 et un éventuel
login injectable).
### 5.1. Identité
### 5.2. Applicatif
### 5.3. Réseau et VPN
### 5.4. Messagerie
### 5.5. Plan à trois horizons
| Horizon | Objectif | Actions (réf. constats) | Effort | Propriétaire suggéré |
| --- | --- | --- | --- | --- |
| 0–3 mois | Couper l'exposition | P1 + rotations + MFA VPN | `j/p` | Dev + Ops + IdO |
| 3–6 mois | Durcir le métier | IDOR, XSS, revues d'accès | `j/p` | Dev + RSSI |
| 6–12 mois | Tenir | CI sécurité, DMARC reject, inventaire | `j/p` | RSSI + DevOps |
Détail narratif : un paragraphe par horizon — ce qui change pour le
client s'il ne le fait pas, pas une leçon sur OWASP.
---
## 6. Annexes
### A. Preuves par constat
Index des fichiers `Cxx-AAAA-MM-JJ-*`.
### B. Requêtes complètes
Fichiers Burp / `curl` `-D`.
### C. Journaux d'outils
`sqlmap` limité, `dig` DMARC. Pas de scan intégral.
### D. Captures d'écran
Horodatage visible. Zones personnelles masquées.
5. Comment remplir sans recopier la démonstration
La fiche C-01 de la leçon 12.2 est un modèle de qualité. Si vous retenez la note A, vous reformulez pour Nordik : le titre peut devenir Injection SQL sur la recherche catalogue, le résumé parle de Nordik Commerce, pas de Juice Shop. Les commandes du lab restent 10.10.10.50:3000 : vous le dites dans le périmètre (environnement de reproduction).
Pour la note B (IDOR), la preuve minimale ressemble à ceci — à adapter à votre cookie de lab, jamais un cookie de production :
# deux paniers, un seul compte
curl -sS -H "Cookie: token=VOTRE_JETON_LAB" \
http://10.10.10.50:3000/rest/basket/1 | jq '{id,UserId}'
curl -sS -H "Cookie: token=VOTRE_JETON_LAB" \
http://10.10.10.50:3000/rest/basket/2 | jq '{id,UserId}'
Attendu pédagogique : le second appel rend un UserId qui n'est pas le vôtre. Impact : lecture de commandes d'autrui. Priorité probable : P1 si données d'un tiers sans obstacle, P2 si le lab ne rend que des totaux.
Pour la note D, vous n'avez pas envoyé de mail. L'impact s'écrit : la politique n'empêche pas un tiers d'émettre un message au nom du domaine ; aucun envoi n'a été réalisé (hors RoE). Ce n'est pas un P1.
Pour la note G, le mot de passe de démonstration se masque dans le corps (Nord***!) et se met en annexe.
6. Plan 3 / 6 / 12 mois — ce qui est crédible
Un plan n'est pas la liste des remédiations recopiée trois fois. Chaque horizon a une intention.
0 à 3 mois — arrêter l'hémorragie. Tout ce qui est P1, plus les compensations qui réduisent la surface le temps du correctif. Rotation des secrets exposés. MFA sur le VPN. Fermeture du listing /assets/backups ou retrait du fichier. Un comité hebdomadaire jusqu'à clôture des P1. Effort typique d'un shop de cette taille : 15 à 30 jours-personnes, surtout du développement applicatif.
3 à 6 mois — corriger le métier. Contrôle d'accès systématique sur les ressources à identifiant (plus un IDOR à la fois). Encodage de sortie sur tous les avis. Revue des comptes d'invitation. Passage DMARC en quarantine (pas encore reject si les flux légitimes ne sont pas alignés). Tests de clôture rejoués par quelqu'un d'autre que l'auteur du correctif.
6 à 12 mois — faire tenir. reject DMARC une fois les SPF/DKIM propres. Pipeline CI : test d'injection et test IDOR sur les nouveaux endpoints. Inventaire des portails (VPN, admin, vieux backups). Exercice de notification Loi 25 à blanc. Le P4 (bandeau nginx) se traite ici, pas en semaine 1.
« L'équipe » n'est pas un propriétaire. Mettez un rôle : responsable applicatif, ops, identité, RSSI. Le client corrigera le nom ; il ne peut pas corriger une ligne vide.
7. Grille d'auto-évaluation — 100 points, identique au TP3
Cochez avant l'export PDF. Chaque case non cochée est un retour en rédaction, pas une note mentale.
7.1. Résumé exécutif — 15 points
- La première phrase donne la posture et le nombre de P1.
- Un directeur comprend sans glossaire.
- Trois risques métier, chacun relié à un
C-0x. - Décisions de la semaine, pas une liste d'outils.
- Le résumé tient sans lire les constats.
7.2. Six constats au gabarit — 30 points
- Six fiches minimum, sept champs chacun (titre, sévérité, contexte, preuve, impact, remédiation, références).
- Titres = action + surface, exploitables en ticket.
- Une preuve rejouable (
curlou HTTP) par fiche, datée. - Une remédiation testable par fiche (le test de clôture est écrit).
- Pas de constat = export d'outil collé.
- Secrets masqués dans le corps, complets seulement en annexe.
7.3. Répartition et cohérence — 10 points
- Au moins 2 P1, 2 P2, 2 P3 ou plus.
- Aucune note F ou H promue P1/P2.
- Chaque écart CVSS → priorité est justifié en une phrase.
- Deux surfaces = deux fiches (pas une « SQLi globale »).
7.4. Plan de remédiation à trois horizons — 20 points
- Tableau 3 / 6 / 12 mois rempli (actions, effort, propriétaire).
- Les P1 vivent dans les 3 mois, pas à 12 mois.
- Au moins une action structurelle (paramétrage SQL partout, contrôle d'accès générique).
- Un paragraphe par horizon, conséquences si report.
7.5. Preuves en annexes — 10 points
- Index
Cxx-AAAA-MM-JJ-…. - Captures horodatées, zones masquées.
- Pas de Nmap de 40 pages.
- RoE d'extraction visible (ex.
--stop=3).
7.6. Priorisation défendable — 10 points
- Vous savez dire chaque P1 à voix haute en quinze secondes.
- Aucune menace de film (« un groupe va… »).
- Les limites du périmètre apparaissent (ce qui n'a pas été testé).
7.7. Clarté et présentation — 5 points
- 20 à 30 pages.
- Table des matières, numéros de fiche stables.
- Une seule voix, français accentué, pas de « !!! ».
- Page de garde, classification, liste de diffusion.
Seuil de remise. 80 / 100 à l'auto-évaluation, sinon vous n'exportez pas. Le correcteur utilise la même grille.
8. Trois séances, puis remise
- Arbitrage (2 h). Six titres, six priorités. Si les P1 sont « nginx » et « commentaire Jira », recommencez.
- Rédaction (5 h). Ordre : constats → vue → plan → périmètre → résumé. Annexes en même temps que chaque fiche.
- Relecture (2 h). Résumé lu à quelqu'un hors cours. Justifications P1 chronométrées. PDF 20–30 pages.
Pièges. Un PDF de 18 pages sans fiches ; six P1 pour « faire sérieux » ; résumé écrit en premier ; capture sans curl ; plan qui répète « corriger les vulnérabilités » ; notes d'un bug bounty réel.
pandoc rapport-nordik.md -o rapport-nordik-commerce.pdf --toc. Une ligne curl coupée au milieu d'une quote devient une preuve fausse.
[ ] PDF 20–30 pages, nommage rapport-nordik-commerce.pdf
[ ] Dossier preuves/ (un fichier par constat)
[ ] Auto-évaluation ≥ 80
[ ] Aucune cible hors lab / hors mission simulée
[ ] Aucun secret en clair dans le courriel de remise
Le TP3 de la semaine 14 note ce livrable. Ce que vous commencez aujourd'hui est déjà l'objet de la note.
Ce que vous emportez de cet atelier
Un squelette que vous réutiliserez en mission réelle — les six parties ne changent pas, seuls les faits changent. Une discipline de priorité : deux P1 défendables, pas une sirène. Un plan que quelqu'un peut tenir un an. La grille du correcteur, utilisée assez tôt pour que le PDF ne soit pas une surprise. Le rapport est le produit ; vous venez de le fabriquer.