Rôle Ansible qui simule un scénario réaliste d'exploitation de la CVE-2025-31161 sur CrushFTP, avec rotation des fichiers de données sensibles et nettoyage automatisé des défenseurs pour la pratique du pentest.
Rôle compagnon pour ludus_crushftp_cve-2025-31161 qui ajoute une couche de scénario réaliste par-dessus l'instance CrushFTP vulnérable.
[!NOTE] Ce rôle nécessite que le rôle principal
ludus_crushftp_cve-2025-31161soit appliqué en premier.
Processus métier simulé — Crée un compte utilisateur CrushFTP (svc_fileprocessor) avec des fichiers de données sensibles qui tournent toutes les 2 minutes, donnant à l'attaquant quelque chose qui vaut la peine d'être exfiltré après avoir exploité le contournement d'authentification.
Simulation du défenseur — Une tâche planifiée s'exécute toutes les 5 minutes et supprime tout service Windows correspondant à exfil*, simulant un nettoyage EDR ou défenseur. Les pentesteurs doivent contourner cela pour maintenir leur persistance.
| Composant | Nom | Intervalle |
|---|---|---|
| Script de nettoyage des services | Invoke-ServiceCleanup.ps1 | Toutes les 5 min |
| Script de rotation des données | Invoke-DataRotation.ps1 | Toutes les 2 min |
| Utilisateur CrushFTP | svc_fileprocessor | — |
| Tâche planifiée | CrushFTP Service Monitor | Toutes les 5 min |
| Tâche planifiée | CrushFTP Data Processing | Toutes les 2 min |
Le script de rotation crée des fichiers nommés sensitive_data_<timestamp>.txt contenant un en-tête CONFIDENTIAL et le hash SHA256 du nom de fichier. Un maximum de 5 fichiers est conservé ; le plus ancien est supprimé lorsqu'un nouveau est créé.
ludus_crushftp_cve-2025-31161 doit d'abord être appliqué sur la même VM.# CrushFTP install dir (must match main role)
ludus_crushftp_sim_install_dir: "C:\\CrushFTP"
# Simulated business user
ludus_crushftp_sim_user: "svc_fileprocessor"
ludus_crushftp_sim_password: "Pr0c3ss!ng2024"
# Data directory and rotation settings
ludus_crushftp_sim_data_dir: "C:\\CrushFTP\\svc_fileprocessor_home"
ludus_crushftp_sim_max_files: 5
ludus_crushftp_sim_data_interval_minutes: 2
# Service cleanup settings
ludus_crushftp_sim_cleanup_interval_minutes: 5
ludus_crushftp_sim_exfil_pattern: "exfil*"
Doit s'exécuter après ludus_crushftp_cve-2025-31161.
ludus:
- vm_name: "{{ range_id }}-crushftp"
hostname: "{{ range_id }}-CRUSH"
template: win2022-server-x64-template
vlan: 20
ip_last_octet: 10
ram_gb: 4
cpus: 2
windows:
sysprep: true
roles:
- ludus_crushftp_cve-2025-31161
- ludus_crushftp_cve-2025-31161_sim
role_vars:
ludus_crushftp_admin_password: "CrushAdmin123!"
ludus_crushftp_sim_password: "Pr0c3ss!ng2024"
ludus ansible role add -d ./ludus_crushftp_cve-2025-31161_sim
ludus range deploy -t user-defined-roles
Après le déploiement, un pentester devrait :
crushadminsvc_fileprocessor et ses fichiers de donnéessensitive_data_*.txt via l'interface CrushFTPexfil_c2) — qui est nettoyée toutes les 5 minutesMIT