Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-34908-check — Rileva in modo sicuro se un server UniFi OS è vulnerabile a CVE-2026-34908 | Kitploit
Strumenti/GitHubGitHub/bishopfox/cve-2026-34908-check
RicognizioneScanner di VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration Testing
GitHubbishopfox/cve-2026-34908-check

CVE-2026-34908-check

Rileva in modo sicuro se un server UniFi OS è vulnerabile a CVE-2026-34908

Vedi Repository
6642 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Script di rilevamento della catena RCE non autenticata su UniFi OS Server

Un rilevatore sicuro per la catena di esecuzione remota di codice non autenticata in UniFi OS Server ≤ 5.0.6, divulgato in Ubiquiti Security Advisory Bulletin 064:

CVEClasseRuolo nella catena
CVE-2026-34908 / CVE-2026-34909Controllo di accesso improprio / path traversalBypass del gateway di autenticazione (il punto d'appoggio)
CVE-2026-34910Validazione di input impropria → command injectionRCE non autenticata raggiunta tramite il bypass

Risolto in UniFi OS Server 5.0.8.

È sicuro da eseguire?

Sì. Il rilevatore è progettato per uso in produzione e assessment:

  • Nessun comando viene eseguito. Il probe raggiunge l'endpoint vulnerabile senza un parametro richiesto, quindi il gestore rifiuta l'input mancante e confermiamo il bug da quell'errore di validazione.
  • Nessuno stato del target viene modificato. Ogni richiesta è un semplice GET.
  • Protezione contro falsi positivi. Un verdetto VULNERABLE richiede sia che l'auth-bypass abbia raggiunto il gestore vulnerabile, sia che una richiesta di baseline (stesso endpoint, senza bypass) sia stata correttamente rifiutata con 401.

Come funziona

UniFi OS mette i propri servizi dietro nginx, che applica l'autenticazione tramite una subrequest. Quel controllo di autenticazione tratta come pubblica qualsiasi richiesta il cui URI grezzo inizi con /api/auth/validate-sso/, ma nginx instrada al backend usando l'URI normalizzato (decodifica percentuale %2f→/ e comprime ../). Una richiesta come:

root@kitploit:~
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package

viene quindi trattata come pubblica (prefisso grezzo) ma instradata all'endpoint interno autenticato di aggiornamento pacchetti (path normalizzato). Senza pkg_name, quell'endpoint risponde query param pkg_name required — dimostrando che il bypass funziona e che il gestore vulnerabile è raggiungibile.

Il rilevatore invia anche una richiesta di baseline allo stesso endpoint senza il bypass e richiede che restituisca 401 prima di dichiarare un host vulnerabile. Il controllo testa il comportamento vulnerabile direttamente — un verdetto VULNERABLE significa che il bypass ha effettivamente raggiunto il sink.

Conferma che il target è UniFi OS prima di qualsiasi verdetto non vulnerabile

Ogni volta che il probe non conferma positivamente VULNERABLE o PATCHED, il rilevatore recupera la pagina principale e cerca l'impronta del portale di gestione UniFi OS ( <title>UniFi OS</title>, window.UNIFI_OS_MANIFEST, id="portal-root", id="site-manager_portal-container"). Questo vale anche per un 401: un host UniFi OS che applica l'autenticazione sul bypass è INCONCLUSIVE, ma un proxy non UniFi che semplicemente restituisce 401 per tutto non porta impronta e viene segnalato UNAFFECTED. Quindi ogni risultato "non vulnerabile" è basato sull'impronta: marcatori presenti → INCONCLUSIVE; marcatori assenti → UNAFFECTED (la CVE non si applica).

Requisiti

  • Python 3.7+, solo libreria standard — nessun pacchetto di terze parti.

Utilizzo

root@kitploit:~
# singolo host (porta predefinita 11443)
./cve_2026_34908_check.py 192.168.1.10

# forma esplicita porta / URL
./cve_2026_34908_check.py host-a:11443 https://host-b

# scansione di un elenco, un target per riga (commenti '#' consentiti), output compatto
./cve_2026_34908_check.py -f targets.txt --brief

# output leggibile da macchina per pipeline
./cve_2026_34908_check.py -f targets.txt --json > results.json

Opzioni

Esempi

Console vulnerabile (verbose, predefinito). La seconda riga è il dettaglio del verdetto; il marcatore [!] e VULNERABLE vengono renderizzati in rosso su un TTY:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10
[!] 192.168.1.10:11443: VULNERABLE
      auth bypass reached the vulnerable handler (no command executed); baseline correctly 401

Console patchata (5.0.8+):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.11
[+] 192.168.1.11:11443: PATCHED
      nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior

Un host UniFi OS confermato che il probe non è riuscito a classificare → INCONCLUSIVE. La riga di dettaglio distingue i due casi (autenticazione applicata vs. risposta inaspettata):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.12 192.168.1.13
[?] 192.168.1.12:11443: INCONCLUSIVE
      bypass blocked / auth enforced (HTTP 401) on a confirmed UniFi OS host — not confirmed vulnerable
[?] 192.168.1.13:11443: INCONCLUSIVE
      UniFi OS detected, but probe returned an unexpected response: HTTP 302 text/html

Un host che non è affatto UniFi OS → UNAFFECTED (l'advisory non si applica):

root@kitploit:~
$ ./cve_2026_34908_check.py 203.0.113.9:443
[-] 203.0.113.9:443: UNAFFECTED
      no UniFi OS web fingerprint on / (probe HTTP 404) — target is not a UniFi OS Server

Scansione di un elenco, una riga allineata per host (--brief). Il codice di uscita è 1 se qualsiasi host è VULNERABLE, altrimenti 0 — utile negli script:

root@kitploit:~
$ ./cve_2026_34908_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE    192.168.1.10:11443
PATCHED       192.168.1.11:11443
INCONCLUSIVE  192.168.1.12:11443
UNAFFECTED    203.0.113.9:443
ERROR         10.0.0.1:11443  timeout
exit: 1

Output leggibile da macchina per pipeline (--json). Ogni risultato porta il verdict più il bypass.state/bypass.detail sottostante; i risultati ERROR portano un campo error invece di bypass:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10 192.168.1.11 10.0.0.1 --json
[
  {
    "target": "192.168.1.10:11443",
    "bypass": {
      "state": "vulnerable",
      "detail": "auth bypass reached the vulnerable handler (no command executed); baseline correctly 401"
    },
    "verdict": "VULNERABLE"
  },
  {
    "target": "192.168.1.11:11443",
    "bypass": {
      "state": "patched",
      "detail": "nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior"
    },
    "verdict": "PATCHED"
  },
  {
    "target": "10.0.0.1:11443",
    "verdict": "ERROR",
    "error": "timeout"
  }
]

Verdetti

Codici di uscita

CodiceSignificato
0Nessun target ha restituito VULNERABLE
1Almeno un target è VULNERABLE
2Errore di utilizzo (argomenti errati / file dei target illeggibile)

Limitazioni

  • INCONCLUSIVE non è una garanzia di sicurezza — conferma un host UniFi OS ma non è stato possibile classificarlo (autenticazione applicata sul bypass, o risposta inaspettata). Un host pesantemente filtrato o protetto da un proxy inaspettato potrebbe non essere classificabile solo dalla rete. Confermare la versione in esecuzione dove possibile.
  • UNAFFECTED significa che la pagina principale non presentava alcuna impronta del portale UniFi OS (inclusi host che restituiscono 401 senza di essa). Una console UniFi OS nascosta dietro un proxy inverso che rimuove o riscrive l'HTML del portale potrebbe quindi essere segnalata erroneamente; confermare direttamente se il target dovrebbe essere UniFi OS.
  • Il rilevatore segnala la raggiungibilità del comportamento vulnerabile.

Rimedio

Aggiornare UniFi OS Server alla versione 5.0.8 o successiva. La correzione aggiunge un confronto URI grezzo vs. normalizzato in nginx (chiudendo il bypass di autenticazione) e la validazione dell'input nel percorso di aggiornamento dei pacchetti (chiudendo la command injection).

Licenza

Questo codice è distribuito sotto licenza MIT.

Dichiarazione legale

L'utilizzo di questo strumento per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per eventuali usi impropri o danni causati da questo programma.

Vedi anche

  • Ubiquiti Security Advisory Bulletin 064
  • Bishop Fox Blog: Full Technical Analysis
Scarica lo strumento
Risposta del probeVerdetto
200 + marcatori di errore del gestoreVULNERABLE
400 (nginx rifiuta la divergenza)PATCHED (5.0.8+)
401, impronta UniFi OS presenteINCONCLUSIVE (autenticazione applicata / bypass bloccato)
401, nessuna impronta UniFi OSUNAFFECTED (non è un server UniFi OS)
qualsiasi altra risposta, nessuna impronta UniFi OSUNAFFECTED (non è un server UniFi OS)
qualsiasi altra risposta, impronta UniFi OS presenteINCONCLUSIVE (risposta inaspettata)
FlagDescrizione
targetsUno o più host, host:port o https://host:port
-f, --targets-file FILELegge i target da un file (uno per riga; commenti #)
--briefSingola riga allineata per target — ideale per scansionare molti host
--jsonEmette risultati JSON strutturati
--timeout SECSTimeout per richiesta (predefinito: 10)
--no-colorDisabilita output colorato (rispetta anche NO_COLOR e non-TTY)
VerdettoSignificato
VULNERABLEAuth bypass ha raggiunto il gestore vulnerabile senza autenticazione. Aggiornare a 5.0.8+.
PATCHEDnginx ha rifiutato la divergenza del path normalizzato (comportamento 5.0.8+).
UNAFFECTEDNessuna impronta del portale UniFi OS sulla pagina principale — il target non è un Server UniFi OS, quindi l'advisory non si applica. Include host che restituiscono 401 senza l'impronta (es. un proxy non correlato che rifiuta tutto).
INCONCLUSIVEHost UniFi OS confermato che non è stato possibile classificare — verificare manualmente la versione. La riga di dettaglio del verdetto indica il caso: (a) il bypass è stato bloccato / autenticazione applicata (401), oppure (b) il probe ha restituito una risposta inaspettata.
ERRORFallimento connessione/timeout/TLS.