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
Panoptic — Panoptic è uno strumento open source di penetration testing che automatizza il processo di ricerca e recupero di contenuti per file di log e configurazione comuni attraverso vulnerabilità di path traversal. | Kitploit
Strumenti/GitHubGitHub/lightos/panoptic
RicognizioneScanner di VulnerabilitàSfruttamento di Applicazioni WebRaccolta InformazioniPenetration Testing
GitHublightos/panoptic

Panoptic

Panoptic è uno strumento open source di penetration testing che automatizza il processo di ricerca e recupero di contenuti per file di log e configurazione comuni attraverso vulnerabilità di path traversal.

Vedi Repository
3257451 mese 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

Panoptic

Logo di Panoptic

License: MIT Python Versions Ruff mypy GitHub last commit CodeRabbit Pull Request Reviews

Panoptic è uno strumento open source di penetration testing che automatizza la ricerca e il recupero di file di log e di configurazione comuni tramite vulnerabilità di path traversal.

Demo di Panoptic

Funzionalità

  • Scansione asincrona concorrente con pool di worker configurabile (--concurrency)
  • Individuazione automatica di file di log e di configurazione comuni tramite injection basata su parametro, percorso, POST, cookie, header e corpo JSON
  • Marcatore FUZZ per punti di injection arbitrari: inserisci FUZZ in qualsiasi valore di --header o --data
  • Codifica Base64 per endpoint che decodificano i percorsi dei file (--base64)
  • Rilevamento automatico del sistema operativo con opzione per limitare ulteriori scansioni
  • Confronto euristico delle risposte con filtro dei codici di stato per ridurre i falsi positivi
  • Iniezione dinamica di casi: analizza /etc/passwd per i file delle home directory, mysql-bin.index per i file binlog
  • Formati di output multipli: testo (rich), JSON, CSV (--output-format)
  • Supporto di ripresa/checkpoint per scansioni di lunga durata (--resume-file)
  • File di configurazione TOML per impostazioni persistenti (--config)
  • Molteplici tecniche di bypass del traversal: prefissi, suffissi, moltiplicatore, sostituzione degli slash, doppia codifica

Requisiti

  • Python 3.10+
  • Git
  • Dipendenze: httpx[socks], rich, rich-argparse e tomli su Python 3.10

Installazione

root@kitploit:~
git clone https://github.com/lightos/Panoptic.git
cd Panoptic
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
panoptic --version

Nel Prompt dei comandi di Windows, attiva con .venv\Scripts\activate.bat; in PowerShell, usa .venv\Scripts\Activate.ps1. L'installazione in modalità editable mantiene Panoptic collegato a questa copia locale per --update, quindi tieni la directory al suo posto. Non eseguire pip install panoptic: quel nome su PyPI appartiene a un progetto non correlato.

Per lo sviluppo:

root@kitploit:~
python -m pip install -e ".[dev]"

Utilizzo

root@kitploit:~
panoptic --url "http://target/include.php?file=test.txt"

Esempi

LFI di base basato su parametro

root@kitploit:~
panoptic --url "http://target/include.php?file=test.txt"
panoptic --url "http://target/include.php?file=test.txt&id=1" \
  --param file

Injection di dati POST

root@kitploit:~
panoptic --url "http://target/include.php" \
  --data "file=test.txt&id=1" --param file

LFI basato su percorso

root@kitploit:~
panoptic --url "http://target/view.php/test.txt" --path-based

Parametro codificato in Base64

root@kitploit:~
panoptic --url "http://target/load.php?file=dGVzdC50eHQ=" \
  --base64 --auto

Injection tramite cookie (marcatore FUZZ)

root@kitploit:~
panoptic --url "http://target/page.php" \
  --header "Cookie: lang=FUZZ" --auto

Injection nel corpo JSON (marcatore FUZZ)

root@kitploit:~
panoptic --url "http://target/api/load" \
  --data '{"file":"FUZZ"}' --auto

Injection tramite header personalizzato (marcatore FUZZ)

root@kitploit:~
panoptic --url "http://target/page.php" \
  --header "X-Template: FUZZ" --auto

Parametro di estensione

root@kitploit:~
panoptic --url "http://target/view.php?file=test&type=txt" \
  --param file --ext-param type

Bypass del filtro con prefisso

root@kitploit:~
panoptic --url "http://target/filtered.php?file=test.txt" \
  --prefix "....//....//....//....//"

Scansioni filtrate

root@kitploit:~
panoptic --url "http://target/include.php?file=test.txt" \
  --os "*NIX" --type conf
panoptic --url "http://target/include.php?file=test.txt" \
  --software PostgreSQL

Output JSON con supporto alla ripresa

root@kitploit:~
panoptic --url "http://target/include.php?file=test.txt" \
  --output-format json --output-file results.json \
  --resume-file scan.checkpoint

Proxy con errori SSL ignorati

root@kitploit:~
panoptic --url "https://target/include.php?file=test.txt" \
  --proxy "socks5://127.0.0.1:9050" --invalid-ssl

Elenca i filtri disponibili

root@kitploit:~
panoptic --list software
panoptic --list category
panoptic --list os

Scansione completa

root@kitploit:~
panoptic --url "http://target/include.php?file=test.txt" \
  --auto --all-versions --concurrency 8

Marcatore FUZZ

Inserisci FUZZ in qualsiasi punto dei valori di --header o --data per marcare il punto di injection. Panoptic sostituisce FUZZ con ogni percorso di file durante la scansione. Ciò consente di testare punti di injection che --param non può raggiungere:

Tipo di injectionEsempio
Valore cookie--header "Cookie: theme=FUZZ"
Header personalizzato--header "X-Include: FUZZ"

Quando FUZZ è presente, --param non è richiesto.

Configurazione

Panoptic supporta file di configurazione TOML per impostazioni persistenti:

root@kitploit:~
panoptic --url "http://target/include.php?file=test.txt" \
  --config ~/.config/panoptic/config.toml

Posizione predefinita della configurazione: ~/.config/panoptic/config.toml (caricata automaticamente se presente, anche senza --config).

root@kitploit:~
[defaults]
# Any long option name (with dashes as underscores) is accepted here,
# including the target and output destinations.
url = "http://target/include.php?file=test.txt"
concurrency = 8
verbose = true
automatic = true
all_versions = true
output_format = "json"
output_file = "results.json"
log_file = "scan.log"
resume_file = "scan.checkpoint"

[proxy]
url = "socks5://127.0.0.1:9050"

[headers]
user_agent = "Mozilla/5.0"
cookie = "sid=foobar; auth=1"
values = ["X-Forwarded-For: 127.0.0.1"]

Priorità: argomenti CLI > file di configurazione > impostazioni predefinite.

Opzioni di destinazione e output supportate dalla configurazione

La tabella [defaults] accetta qualsiasi opzione di scansione, non solo ottimizzazioni delle prestazioni. In particolare puoi rendere persistenti:

  • url — la destinazione predefinita (sovrascrivibile a ogni esecuzione con --url)
  • output_format, output_file — dove vengono salvati i risultati machine-readable
  • log_file — rispecchia l'output della console su un file
  • resume_file — posizione del checkpoint per scansioni riprendibili

Gli artefatti sensibili scritti da Panoptic — il file di log, il file di output dei risultati/elenchi e qualsiasi file salvato con --write-files — sono forzati a permessi 0600 di sola proprietà su POSIX. Le piattaforme che espongono O_NOFOLLOW rifiutano anche atomicamente un symlink preesistente nel componente finale del percorso. Sulle piattaforme senza O_NOFOLLOW, Panoptic esegue un controllo pre-apertura del symlink/junction con il miglior sforzo possibile, ma il controllo non può eliminare una condizione di corsa. I bit di modalità di Windows non configurano gli ACL NTFS, quindi usa una directory adeguatamente restrittiva quando gli artefatti possono contenere dati sensibili.

Sovrascrivere i booleani della configurazione dalla riga di comando

Ogni flag booleano ha una controparte --no-, quindi un valore impostato su true nel file di configurazione può essere disattivato per una singola esecuzione senza modificare il file:

root@kitploit:~
# config.toml sets verbose = true and automatic = true
panoptic --url "http://target/x.php?file=test.txt" --no-verbose --no-auto

Poiché un flag booleano omesso rimane non impostato (invece di avere come predefinito false), il valore della configurazione viene usato a meno che non si passi esplicitamente il flag o la sua forma --no-.

Proxy

Instrada il traffico attraverso un proxy HTTP(S) o SOCKS:

root@kitploit:~
panoptic --url "https://target/x.php?file=test.txt" \
  --proxy "socks5://127.0.0.1:9050"
  • Schemi accettati: http://, https://, socks5://, socks5h:// (socks5h risolve il DNS attraverso il proxy — utile per Tor e per evitare perdite DNS locali). SOCKS4 non è supportato dal client HTTP sottostante. Lo schema e l'host vengono validati prima dell'avvio della scansione.
  • Il supporto SOCKS proviene dall'extra httpx[socks], installato per impostazione predefinita.
  • Per impostazione predefinita Panoptic rispetta le variabili d'ambiente standard HTTP_PROXY / HTTPS_PROXY / NO_PROXY. Passa --ignore-proxy per bypassarle e connetterti direttamente (questo disabilita anche qualsiasi proxy configurato tramite variabili d'ambiente).
  • Combina con --invalid-ssl quando intercetti HTTPS attraverso un proxy con una CA propria. Questo disabilita la verifica del certificato ed è pericoloso su reti non affidabili.

Espansione delle versioni (--all-versions)

Alcuni percorsi inclusi sono modelli di versione (ad esempio le directory di rilascio JBoss scritte come [JBOSS]). Per impostazione predefinita queste righe modello vengono saltate, perché un percorso letterale [JBOSS] non può mai corrispondere a un file reale. Passando --all-versions ogni modello viene espanso in base all'elenco di versioni incluso, aggiungendo un percorso concreto per ogni versione nota: una scansione molto più ampia ma decisamente più approfondita:

root@kitploit:~
panoptic --url "http://target/x.php?file=test.txt" --auto --all-versions

Confronto delle risposte

Panoptic non classifica un percorso basandosi solo sull'header Content-Length controllato dalla destinazione. Confronta l'intero corpo normalizzato con la baseline del percorso non valido. Un limite superiore economico di similarità evita il confronto completo solo quando può già dimostrare che i corpi differiscono; le risposte ambigue usano il rapporto esatto per evitare falsi negativi dovuti a corpi riordinati.

Ripresa / Checkpoint

--resume-file PATH registra i casi completati così una scansione interrotta può continuare da dove era rimasta:

root@kitploit:~
panoptic --url "http://target/x.php?file=test.txt" \
  --resume-file scan.checkpoint
# ... interrupt with Ctrl-C, then re-run the same command to resume

Il checkpoint memorizza solo gli ID dei casi completati più un'impronta SHA-256 della definizione della scansione (URL, parametri di injection, opzioni di rilevamento, header, cookie, User-Agent e set esatto di casi). Non memorizza mai credenziali, header o URL in chiaro.

Alla ripresa, l'impronta viene ricalcolata e confrontata. Se qualcosa che cambierebbe il significato della scansione è diverso — una destinazione, un parametro, un header, un cookie, un set di filtri o l'interruttore --all-versions differenti — il checkpoint viene rifiutato con un avviso e la scansione riparte da zero, così un checkpoint obsoleto non può mai saltare silenziosamente casi di una scansione diversa. I checkpoint legacy con elenco semplice vengono accettati con un avviso e limitati agli ID dei casi presenti nella scansione corrente; poiché quel vecchio formato non ha impronta, gli utenti dovrebbero sostituirlo con il formato di nuova scrittura. Le richieste fallite (errori di rete) sono volutamente non registrate nel checkpoint, così da essere ritentate alla ripresa.

Versione e aggiornamento

root@kitploit:~
panoptic --version   # print the installed version and exit
panoptic --update    # fast-forward update from the official GitHub repo

--update funziona solo da un checkout git il cui remote origin usa HTTPS o SSH e corrisponde all'upstream ufficiale (verificato prima del pull, per resistere a configurazioni remote non sicure o manomesse). Fa avanzare il branch main del checkout tramite il ref esplicito main dell'upstream. Le installazioni non basate su checkout possono essere aggiornate in sicurezza dall'archivio GitHub ufficiale:

root@kitploit:~
python -m pip install --upgrade https://github.com/lightos/Panoptic/archive/refs/heads/main.zip

Quando viene eseguito da un checkout, il banner mostra anche la revisione git breve corrente.

Codici di uscita

Panoptic usa i codici di uscita convenzionali dei processi per poter essere scriptato:

  • 0 — Successo: la scansione (o --list / --update) è completata. Le singole richieste che esauriscono i tentativi vengono segnalate con un avviso e restano idonee per una scansione ripresa, ma non fanno fallire un'esecuzione altrimenti riuscita.
  • 1 — Utilizzo non valido: argomenti mancanti o non validi, oppure nessun parametro injectable trovato.
  • 2 — Errore operativo: impossibile connettersi, nessun caso di test corrispondente, tutte le richieste in coda sono fallite, oppure un worker, un checkpoint, una scrittura dell'output o la configurazione hanno fallito.
  • 130 — Interrotto dall'utente (Ctrl-C / SIGINT).

Contributi

I contributi sono benvenuti! Apri issue o pull request su GitHub.

Testbed

Per test end-to-end sicuri e riproducibili, consulta il Panoptic LFI Testbed. Fornisce endpoint volutamente vulnerabili che coprono i metodi di injection supportati da Panoptic e le trasformazioni di traversal.

Licenza

Questo progetto è concesso in licenza MIT - consulta il file LICENSE per i dettagli.

Scarica lo strumento
  • Supporto proxy HTTP/HTTPS e SOCKS5 con validazione
  • Supporto di User-Agent, cookie e header casuali o personalizzati
  • Oscuramento delle credenziali nel banner, nel log e nell'output machine-readable (inclusi valori numerici e booleani nel corpo JSON)
  • Artefatti sensibili protetti con permessi 0600 di sola proprietà su POSIX e protezione del symlink del componente finale dove il sistema operativo lo supporta
  • Aggiornamento automatico con verifica dell'URL remoto (--update)
  • Corpo JSON--data '{"template":"FUZZ"}'
    Valore annidato--header "Cookie: sid=abc; lang=FUZZ"