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-0300-audit — Strumento di audit in sola lettura per CVE-2026-0300 (esposizione del portale di autenticazione User-ID di PAN-OS) | Kitploit
Strumenti/GitHubGitHub/tailwindrg/cve-2026-0300-audit
Sicurezza dell'Infrastruttura CloudAnalisi delle VulnerabilitàScripting e AutomazioneAudit di ConfigurazioneSicurezza di ReteDevSecOps
GitHubtailwindrg/cve-2026-0300-audit

cve-2026-0300-audit

Strumento di audit in sola lettura per CVE-2026-0300 (esposizione del portale di autenticazione User-ID di PAN-OS)

Vedi Repository
84 mesi faNon ancora revisionato

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

Strumenti di Audit per CVE-2026-0300

Strumenti di audit in sola lettura per CVE-2026-0300 — il buffer overflow non autenticato nel Portale di Autenticazione User-ID di PAN-OS (precedentemente noto come "Captive Portal") sui firewall delle serie PA e VM.

Questo repository accompagna l'advisory di sicurezza di Tailwind Resource Group TRG-SA-2026-003 e fornisce:

  • audit_portal.py — Livello 1: audit di un singolo firewall
  • audit_fleet.py — Livello 2: scansione della flotta guidata da Panorama (concorrente)
  • panos_audit.py — libreria condivisa utilizzata da entrambe le CLI

Gli script sono in sola lettura. Eseguono query di tipo show contro l'API XML di PAN-OS e non modificano mai la configurazione. La chiave API viene inviata tramite l'header HTTP X-PAN-KEY anziché come parametro di query nell'URL, quindi non compare nei log di accesso del piano di gestione PAN, nei log dei proxy con ispezione TLS o negli argomenti di processo dell'auditor.

Perché esiste

Il record CVE utilizza il nome moderno della funzionalità "Portale di Autenticazione User-ID". Lo schema XML di PAN-OS, le opzioni CLI e i percorsi URL della documentazione utilizzano ancora il vocabolario legacy captive-portal. Gli operatori che eseguono audit sulle flotte con show config running | match authentication-portal mancheranno silenziosamente ogni configurazione perché quella stringa non appare mai come elemento di configurazione. Questo strumento cerca il nome dell'elemento corretto per lo schema indipendentemente da quando la configurazione è stata creata.

L'analisi completa di Tailwind su questo problema di nomenclatura è in TRG-SA-2026-003, "Captive Portal's legacy footprint."

Requisiti

  • Python 3.10 o successivo
  • Solo libreria standard — nessun pip install richiesto
  • Una chiave API PAN-OS con accesso in lettura al firewall (o, per il Livello 2, a Panorama)
  • Un certificato firmato da CA (o attendibile dall'operatore) sull'interfaccia di gestione del firewall; --insecure è fornito solo per audit di avvio una tantum

Livello 1 — firewall singolo

root@kitploit:~
export PAN_API_KEY="<key>"
./audit_portal.py --hostname fw1.example.com

Esempio di output tabellare:

root@kitploit:~
vsys: vsys1
  configured:    True
  enabled:       True
  redirect_host: auth-portal.internal.example.com
  mode:          redirect
  bound:         ethernet1/3(internal-trust), ethernet1/4(guest)
  tls_verified:  True
  risk:          EXPOSED_LIKELY

Altri formati di output: --output json o --output csv.

Altre opzioni: --vsys <name> per audit di un singolo vsys, --timeout/--retries per upstream lenti, --debug per dettagli di errore verbosi su stderr.

Livello 2 — scansione flotta Panorama

root@kitploit:~
export PAN_API_KEY="<panorama-key>"
./audit_fleet.py --hostname panorama.example.com --workers 16 --output csv > fleet-audit.csv

Ogni riga nel CSV è un dispositivo-vsys con stato del portale, host di reindirizzamento, modalità, binding delle interfacce e una classificazione del rischio. Lo script utilizza il parametro API target=<serial> di Panorama, quindi non si connette mai direttamente ai firewall gestiti — una sola connessione a Panorama esegue la scansione dell'intera flotta.

Opzioni notevoli:

  • --workers N — thread di audit concorrenti (default 8, max 32). Una flotta di 1000 dispositivi viene completata in minuti anziché nell'ora o più che richiederebbe una scansione seriale.
  • --timeout, --retries — impostazioni per singola chiamata API. Gli errori transitori URLError e HTTP 5xx vengono ritentati con backoff limitato.
  • --exclude-disconnected — di default, i dispositivi disconnessi vengono inclusi con risk=DISCONNECTED così rimangono visibili durante la finestra di patch. Usa questa opzione per escluderli.
  • --min-expected-devices N — avvisa (su stderr) se Panorama restituisce meno dispositivi di N. Utile per rilevare il troncamento della risposta rispetto a una dimensione nota della flotta.
  • --serial-filter '0007*' — filtro glob per seriale per eseguire l'audit di un sottoinsieme.
  • --debug — stampa dettagli di errore verbosi per dispositivo su stderr (include stringhe reason dell'upstream; disattivato di default per evitare di far trapelare hostname nei CSV destinati ai clienti).

Classificazione del rischio

La colonna risk nell'output è una delle seguenti:

EtichettaSignificato
INFO_NOT_CONFIGUREDNessun blocco <captive-portal> sul dispositivo. Fuori dall'ambito di CVE-2026-0300.
INFO_DISABLEDIl portale è configurato ma enabled=no. Il percorso di codice vulnerabile non è attivo.
REVIEW_POLICY_NO_BINDINGSPortale abilitato, ma nessun binding di interfaccia trovato nella configurazione. Verificare tramite WebUI.
EXPOSED_LIKELYPortale abilitato e associato a una zona il cui nome suggerisce esposizione non attendibile (untrust, dmz, guest, external, internet, wan, public). Investigare per primo.
REVIEW_POLICYPortale abilitato e associato a zone con nomi interni. Esaminare la security policy per confermare la raggiungibilità.

EXPOSED_LIKELY è un suggerimento, non un verdetto — i nomi delle zone sono convenzioni dell'operatore, non imposizioni. Lo script non può sostituire un'analisi della security policy; ordina l'output della flotta per indicare dove concentrare l'attenzione per prima.

Cosa fanno gli script — e cosa non fanno

Fanno:

  • Interrogano i blocchi <captive-portal> per vsys (il nome dell'elemento dello schema è sempre captive-portal, indipendentemente dalla denominazione dell'interfaccia utente o dalla versione PAN-OS).
  • Riportano abilitato/disabilitato, host di reindirizzamento, modalità e binding delle interfacce risolti per zona.
  • Classificano il rischio tramite euristica sui nomi delle zone così le righe EXPOSED_LIKELY emergono per prime nell'output della flotta.
  • Inviano la chiave API tramite l'header X-PAN-KEY così rimane fuori dai log di accesso URL e dagli argomenti di processo.
  • Limitano la dimensione del corpo della risposta (50 MB) per difendersi dagli attacchi di espansione delle entità sul parser XML.
  • Ritentano gli errori transitori con backoff limitato.

Non fanno:

  • Non esaminano in modo esaustivo la security policy. Se il portale sia raggiungibile da una rete non attendibile dipende dalle regole di policy, NAT e binding delle zone — l'operatore deve completare quell'analisi a partire dall'output dell'audit.
  • Non testano la raggiungibilità tramite sonda di rete. Solo audit di configurazione puro.
  • Non modificano alcuna configurazione. Tutte le chiamate API sono in sola lettura.

Generazione di una chiave API PAN-OS

La chiave API PAN-OS eredita il ruolo e le autorizzazioni dell'utente che la genera.

Avvertenza importante: non esiste una concessione XML API in sola lettura in PAN-OS.

Le autorizzazioni del Ruolo Amministratore sulla scheda XML API sono binarie Abilita/Disabilita per categoria — Configurazione, Richieste Operative, Commit, Export, Import, Report, Log, Agente User-ID. Abilitare Configurazione per XML API consente sia show che azioni set/edit/delete/move/rename/clone. Abilitare Richieste Operative consente operazioni <request> arbitrarie inclusi <request><restart>. Le schede Web UI e REST API offrono l'opzione Sola Lettura; la scheda XML API no.

Un "utente audit" creato abilitando queste categorie XML API detiene piena autorità di scrittura XML API sul dispositivo. Tratta la chiave risultante come una credenziale privilegiata: limita la sua durata alla finestra di audit, conservala in un gestore di segreti e disabilita l'utente quando il lavoro è completato.

Riferimento PAN canonico: Get Your API Key (PAN-OS XML API).

Tramite la WebUI

Sul firewall (o su Panorama, se stai usando audit_fleet.py):

  1. Crea il Ruolo Amministratore. Vai su Device > Admin Roles (o Panorama > Admin Roles). Clicca Add.

    • Assegna al ruolo un nome, ad es. audit-config-and-op.
    • Nella scheda Web UI, imposta tutto su None (nessun accesso UI necessario per l'utente audit).
    • Nella scheda XML API, abilita Configuration e Operational Requests. Lascia disabilitati Commit, Export, Import, Report, Log e User-ID Agent.
    • Clicca OK. Il ruolo risultante concede piena autorità XML API su Configuration e Operational Requests — vedi l'avvertenza sopra.
  2. Crea l'utente audit. Vai su Device > Administrators (o Panorama > Administrators). Clicca Add.

    • Nome: ad es. audit-cve-2026-0300.
    • Imposta una password forte o associalo a un Profilo di Autenticazione.
    • Tipo Amministratore: Role Based → seleziona audit-config-and-op.
    • Clicca OK, poi Commit della configurazione candidata.
  3. Genera la chiave API con le credenziali del nuovo utente. PAN-OS non espone un pulsante "genera chiave API" nella WebUI — l'endpoint keygen è il percorso supportato. Usa un corpo POST così le credenziali non vengono registrate nei log di accesso URL:

    root@kitploit:~
    read -rs AUDIT_PW; echo
    export PAN_API_KEY="$(curl -ksX POST "https://fw1.example.com/api/" \
      --data-urlencode "type=keygen" \
      --data-urlencode "user=audit-cve-2026-0300" \
      --data-urlencode "password=$AUDIT_PW" \
      | grep -oE '<key>[^<]+' | cut -c6-)"
    unset AUDIT_PW
    

    read -rs legge la password senza mostrarla sul terminale e senza inserirla nella cronologia della shell. Lo script legge la PAN_API_KEY risultante dall'ambiente e la invia tramite l'header HTTP X-PAN-KEY — né la password né la chiave compaiono nei log di accesso URL o in ps auxww mentre lo script è in esecuzione.

  4. Disabilita l'utente quando il lavoro di audit è completato. Vai su Device > Administrators, individua audit-cve-2026-0300, clicca Delete (o disabilita l'utente). Esegui il commit. Questo invalida tutte le chiavi generate per quell'utente.

Note di hardening

  • Tieni password e chiave fuori dalla cronologia della shell. read -rs copre la password. Per la chiave in PAN_API_KEY, preferisci impostarla in modo interattivo tramite lo snippet sopra piuttosto che incollarla da un file. Se devi caricarla da un file, usa set +o history per la sessione.
  • Usa un certificato firmato da CA sull'interfaccia di gestione del firewall. L'opzione --insecure in entrambi gli script di audit disabilita completamente il controllo del nome host TLS e la validazione del certificato. Qualsiasi attaccante sul percorso può fare MITM della risposta di audit e riportare portal_enabled=False per un dispositivo compromesso. Lo script audit_fleet.py richiede --accept-mitm-risk insieme a --insecure per le scansioni di flotta perché il raggio d'esplosione di una risposta avvelenata è a livello di flotta.
  • Ruota la chiave al termine. Disabilitare o eliminare l'utente audit invalida tutte le chiavi generate sotto quell'utente.

Codici di uscita

  • 0 — nessun portale abilitato su alcun vsys sottoposto ad audit
  • 2 — nessun vsys trovato (configurazione transitoria o non supportata)
  • 3 — portale abilitato su almeno un vsys (revisione richiesta)
  • 4 — chiamata API fallita (autenticazione, TLS, rete)

L'uscita non zero su "portale abilitato" è intenzionale — ti consente di collegare lo script a pipeline CI / scansione flotta che necessitano di un segnale pulito.

Licenza

Concesso in licenza sotto Apache License, Versione 2.0. Vedi LICENSE per i termini completi.

L'uso commerciale è consentito; è richiesta l'attribuzione (conserva l'avviso di copyright e il file di licenza nelle opere derivate).

Copyright 2026 Tailwind Resource Group.

Vedi anche

  • TRG-SA-2026-003 — advisory di sicurezza di Tailwind Resource Group per CVE-2026-0300
  • PAN PSIRT — https://security.paloaltonetworks.com/CVE-2026-0300
  • PAN best-practice (limitare l'accesso al portale) — https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA14u000000CqbiCAC
  • Tailwind Resource Group — https://tailwindrg.com
Scarica lo strumento