
Rôle Ansible déployant une instance vulnérable de CrushFTP 10.8.0 sur Windows pour des tests de pénétration autorisés du contournement d'authentification CVE-2025-31161.
Un rôle Ansible qui déploie une instance vulnérable de CrushFTP 10.8.0 sur Windows pour des tests de pénétration autorisés de CVE-2025-31161 (contournement d'authentification).
Le binaire vulnérable de CrushFTP est hébergé sur rufflabs/crushftp_cve-2025-31161 et téléchargé automatiquement lors du déploiement. Si ce dépôt est indisponible, le rôle se rabat sur un téléchargement direct depuis Docker Hub.
[!WARNING] Ce rôle déploie une application intentionnellement vulnérable. À utiliser uniquement dans des environnements de laboratoire isolés. Ne pas exposer à des réseaux non fiables.
api.adoptium.net lors du premier déploiement (les fichiers sont mis en cache ensuite).Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir ) :
defaults/main.yml# URL de la release GitHub pour la build vulnérable de CrushFTP
ludus_crushftp_download_url: "https://github.com/rufflabs/crushftp_cve-2025-31161/releases/download/v10.8.0_4/CrushFTP10_10.8.0_4.zip"
# Repli sur Docker Hub si le téléchargement GitHub échoue
ludus_crushftp_fallback_to_docker: true
# Chemin d'installation sur la cible Windows
ludus_crushftp_install_dir: "C:\\CrushFTP"
# Compte administrateur (cible par défaut de l'exploit pour CVE-2025-31161)
ludus_crushftp_admin_user: "crushadmin"
ludus_crushftp_admin_password: "CrushAdmin123!"
# Paramètres du service Windows
ludus_crushftp_service_name: "CrushFTP"
ludus_crushftp_service_start_mode: auto
# Ports réseau
ludus_crushftp_http_port: 8080
ludus_crushftp_https_port: 443
# Créer des règles d'autorisation du pare-feu Windows
ludus_crushftp_configure_firewall: true
Aucune.
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:
- rufflabs.ludus_crushftp_cve_2025_31161
role_vars:
ludus_crushftp_admin_user: "crushadmin"
ludus_crushftp_admin_password: "CrushAdmin123!"
# Ajouter le rôle
ludus ansible role add rufflabs.ludus_crushftp_cve_2025_31161
# Mettre à jour la configuration de la plage
ludus range config get > config.yml
# Modifier config.yml pour ajouter le rôle (voir l'exemple ci-dessus)
ludus range config set -f config.yml
# Déployer (rôle uniquement, si la plage est déjà opérationnelle)
ludus range deploy -t user-defined-roles
- hosts: crushftp_hosts
roles:
- rufflabs.ludus_crushftp_cve_2025_31161
Une fois déployé, testez depuis votre machine d'attaque :
# Détection avec Nuclei
nuclei -u http://<ip-cible>:8080 -t CVE-2025-2825.yaml
# PoC d'Immersive Labs (crée un compte administrateur backdoor)
python3 cve-2025-31161.py \
--target_host http://<ip-cible>:8080 \
--target_user crushadmin \
--new_user backdoor \
--password backdoor123
CrushFTP10_10.8.0_4.zip depuis les releases GitHub de rufflabs/crushftp_cve-2025-31161 (se rabat sur l'API du registre Docker Hub si indisponible). Télécharge Adoptium JDK 21. Les deux sont mis en cache sur l'hôte Ludus dans /opt/ludus/resources/crushftp/.crushadmin, installe le service Windows, définit JAVA_HOME et ouvre les ports du pare-feu.| Dépôt | Objectif |
|---|---|
| rufflabs/crushftp_cve-2025-31161 | Héberge le binaire vulnérable de CrushFTP en tant qu'actif de release GitHub |
| rufflabs/ludus_crushftp_cve-2025-31161 | Ce rôle — automatisation Ansible/Ludus pour le déploiement |
MIT