Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Panoptic — Panoptic est un outil de test d'intrusion open source qui automatise le processus de recherche et de récupération de contenu pour les fichiers journaux et de configuration courants via des vulnérabilités de traversée de chemin. | Kitploit
Outils/GitHubGitHub/lightos/panoptic
ReconnaissanceScanners de VulnérabilitésExploitation d'Applications WebCollecte d'InformationsTests d'Intrusion
GitHublightos/panoptic

Panoptic

Panoptic est un outil de test d'intrusion open source qui automatise le processus de recherche et de récupération de contenu pour les fichiers journaux et de configuration courants via des vulnérabilités de traversée de chemin.

Voir le dépôt
32574il y a 22 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Panoptic

Panoptic Logo

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

Panoptic est un outil open source de test d'intrusion qui automatise la recherche et la récupération de fichiers journaux et de configuration courants via des vulnérabilités de traversée de chemin.

Panoptic Demo

Fonctionnalités

  • Analyse asynchrone concurrente avec un pool de travailleurs configurable (--concurrency)
  • Découverte automatique des fichiers journaux et de configuration courants via l'injection par paramètre, par chemin, POST, cookie, en-tête et corps JSON
  • Marqueur FUZZ pour des points d'injection arbitraires — placez FUZZ dans n'importe quelle valeur --header ou --data
  • Encodage Base64 pour les points de terminaison qui décodent les chemins de fichiers (--base64)
  • Détection automatique du système d'exploitation avec option de restriction des analyses ultérieures
  • Comparaison heuristique des réponses avec filtrage par code de statut pour réduire les faux positifs
  • Injection dynamique de cas — parse /etc/passwd pour les fichiers du répertoire personnel, mysql-bin.index pour les fichiers binlog
  • Plusieurs formats de sortie : texte (rich), JSON, CSV (--output-format)
  • Prise en charge de la reprise/des points de contrôle pour les analyses de longue durée (--resume-file)
  • Fichiers de configuration TOML pour les paramètres persistants (--config)

Prérequis

  • Python 3.10+
  • Git
  • Dépendances : httpx[socks], rich, rich-argparse et tomli sur Python 3.10

Installation

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

Dans l'invite de commandes Windows, activez avec .venv\Scripts\activate.bat ; dans PowerShell, utilisez .venv\Scripts\Activate.ps1. L'installation modifiable (editable) maintient Panoptic connecté à ce dépôt pour --update ; conservez donc le répertoire en place. N'exécutez pas pip install panoptic : ce nom PyPI appartient à un projet sans rapport.

Pour le développement :

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

Utilisation

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

Exemples

LFI de base basée sur un paramètre

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 de données POST

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

LFI basée sur le chemin

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

Paramètre encodé en Base64

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

Injection de cookie (marqueur FUZZ)

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

Injection dans le corps JSON (marqueur FUZZ)

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

Injection d'en-tête personnalisé (marqueur FUZZ)

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

Paramètre d'extension

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

Contournement de filtre avec préfixe

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

Analyses filtrées

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

Sortie JSON avec prise en charge de la reprise

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

Proxy avec erreurs SSL ignorées

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

Lister les filtres disponibles

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

Analyse complète

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

Marqueur FUZZ

Placez FUZZ n'importe où dans les valeurs --header ou --data pour marquer le point d'injection. Panoptic remplace FUZZ par chaque chemin de fichier pendant l'analyse. Cela permet de tester des points d'injection que --param ne peut pas atteindre :

Type d'injectionExemple
Valeur de cookie--header "Cookie: theme=FUZZ"
En-tête personnalisé--header "X-Include: FUZZ"

Lorsque FUZZ est présent, --param n'est pas requis.

Configuration

Panoptic prend en charge les fichiers de configuration TOML pour les paramètres persistants :

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

Emplacement de configuration par défaut : ~/.config/panoptic/config.toml (chargé automatiquement lorsqu'il est présent, même sans --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é : arguments CLI > fichier de configuration > valeurs par défaut intégrées.

Options de cible et de sortie prises en charge par la configuration

La table [defaults] accepte toute option d'analyse, pas seulement le réglage des performances. En particulier, vous pouvez conserver :

  • url — la cible par défaut (remplacez à chaque exécution avec --url)
  • output_format, output_file — où vont les résultats lisibles par machine
  • log_file — reflète la sortie console dans un fichier
  • resume_file — emplacement du point de contrôle pour les analyses reprenables

Les artefacts sensibles écrits par Panoptic — le fichier journal, le fichier de sortie des résultats/listes et tous les fichiers enregistrés avec --write-files — sont forcés à des permissions 0600 réservées au propriétaire sur POSIX. Les plates-formes exposant O_NOFOLLOW refusent également atomiquement un lien symbolique préexistant au niveau du composant final du chemin. Sur les plates-formes sans O_NOFOLLOW, Panoptic effectue une vérification de lien symbolique/jonction avant ouverture au mieux, mais cette vérification ne peut pas éliminer une course. Les bits de mode Windows ne configurent pas les ACL NTFS ; utilisez donc un répertoire correctement restreint lorsque des artefacts peuvent contenir des données sensibles.

Remplacement des booléens de configuration en ligne de commande

Chaque drapeau booléen a un équivalent --no-, donc une valeur définie sur true dans le fichier de configuration peut être désactivée pour une seule exécution sans modifier le fichier :

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

Comme un drapeau booléen omis reste non défini (plutôt que de prendre par défaut false), la valeur de configuration est utilisée, sauf si vous passez explicitement le drapeau ou sa forme --no-.

Utilisation d'un proxy

Acheminez le trafic via un proxy HTTP(S) ou SOCKS :

root@kitploit:~
panoptic --url "https://target/x.php?file=test.txt" \
  --proxy "socks5://127.0.0.1:9050"
  • Schémas acceptés : http://, https://, socks5://, socks5h:// (socks5h résout le DNS via le proxy — utile pour Tor et pour éviter les fuites DNS locales). SOCKS4 n'est pas pris en charge par le client HTTP sous-jacent. Le schéma et l'hôte sont validés avant le début de l'analyse.
  • La prise en charge de SOCKS provient de l'extra httpx[socks], installé par défaut.
  • Par défaut, Panoptic respecte les variables d'environnement standard HTTP_PROXY / HTTPS_PROXY / NO_PROXY. Passez --ignore-proxy pour les contourner et vous connecter directement (cela désactive également tout proxy configuré par l'environnement).
  • Combinez avec --invalid-ssl lors de l'interception de HTTPS via un proxy avec sa propre autorité de certification (AC). Cela désactive la vérification des certificats et est dangereux sur les réseaux non fiables.

Expansion de version (--all-versions)

Certains chemins fournis sont des modèles de version (par exemple les répertoires de version JBoss écrits comme [JBOSS]). Par défaut, ces lignes modèles sont ignorées, car un chemin littéral [JBOSS] ne peut jamais correspondre à un fichier réel. Passer --all-versions développe chaque modèle par rapport à la liste de versions fournie, ajoutant un chemin concret par version connue — une analyse beaucoup plus volumineuse mais bien plus approfondie :

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

Comparaison des réponses

Panoptic ne classe pas un chemin sur la seule base de l'en-tête Content-Length contrôlé par la cible. Il compare le corps normalisé complet à la référence du chemin invalide. Une limite supérieure de similarité peu coûteuse évite la comparaison complète uniquement lorsqu'elle peut déjà prouver que les corps diffèrent ; les réponses ambiguës utilisent le ratio exact pour éviter les faux négatifs dus à un corps réordonné.

Reprise / Points de contrôle

--resume-file PATH enregistre les cas terminés afin qu'une analyse interrompue puisse reprendre là où elle s'est arrêtée :

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

Le point de contrôle stocke uniquement les identifiants des cas terminés plus une empreinte SHA-256 de la définition de l'analyse (URL, paramètres d'injection, options de détection, en-têtes, cookie, User-Agent et l'ensemble exact des cas). Il ne stocke jamais d'identifiants, d'en-têtes ou d'URL en clair.

À la reprise, l'empreinte est recalculée et comparée. Si quoi que ce soit qui changerait le sens de l'analyse diffère — une cible, un paramètre, un en-tête, un cookie, un ensemble de filtres ou une bascule --all-versions différent — le point de contrôle est rejeté avec un avertissement et l'analyse repart de zéro, de sorte qu'un point de contrôle obsolète ne peut jamais ignorer silencieusement des cas d'une analyse différente. Les points de contrôle hérités en liste simple sont acceptés avec un avertissement et limités aux identifiants de cas présents dans l'analyse en cours ; comme cet ancien format n'a pas d'empreinte, les utilisateurs devraient le remplacer par le nouveau format. Les requêtes en échec (erreur réseau) ne sont délibérément pas consignées dans le point de contrôle afin d'être retentées à la reprise.

Version et mise à jour

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

--update ne fonctionne qu'à partir d'un dépôt git dont le remote origin utilise HTTPS ou SSH et correspond à l'amont officiel (vérifié avant le tirage, pour résister à une configuration distante non sécurisée ou falsifiée). Il effectue un fast-forward de la branche main extraite à partir de la référence main explicite de l'amont. Les installations sans dépôt git peuvent être mises à jour en toute sécurité depuis l'archive GitHub officielle :

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

Lorsqu'il est exécuté depuis un dépôt, la bannière affiche également la révision git courte actuelle.

Codes de sortie

Panoptic utilise des codes de sortie de processus conventionnels afin de pouvoir être scripté :

  • 0 — Succès : l'analyse (ou --list / --update) est terminée. Les requêtes individuelles qui épuisent leurs tentatives font l'objet d'un avertissement et restent éligibles pour une analyse reprise, mais ne font pas échouer une exécution par ailleurs réussie.
  • 1 — Utilisation invalide : arguments manquants ou invalides, ou aucun paramètre injectable trouvé.
  • 2 — Échec opérationnel : connexion impossible, aucun cas de test correspondant, toutes les requêtes en file ont échoué, ou un travailleur, un point de contrôle, une écriture de sortie ou une configuration a échoué.
  • 130 — Interrompu par l'utilisateur (Ctrl-C / SIGINT).

Contribution

Les contributions sont les bienvenues ! Veuillez ouvrir des issues ou des pull requests sur GitHub.

Banc d'essai

Pour des tests de bout en bout sûrs et reproductibles, consultez le Panoptic LFI Testbed. Il fournit des points de terminaison volontairement vulnérables couvrant les méthodes d'injection et les transformations de traversée prises en charge par Panoptic.

Licence

Ce projet est sous licence MIT — consultez le fichier LICENSE pour plus de détails.

Télécharger l’outil
  • Plusieurs techniques de contournement de traversée : préfixes, postfixes, multiplicateur, remplacement des barres obliques, double encodage
  • Prise en charge des proxys HTTP/HTTPS et SOCKS5 avec validation
  • Prise en charge d'un User-Agent, de cookies et d'en-têtes aléatoires ou personnalisés
  • Masquage des identifiants dans la bannière, les journaux et la sortie lisible par machine (y compris les valeurs numériques et booléennes du corps JSON)
  • Artefacts sensibles protégés par des permissions 0600 réservées au propriétaire sur POSIX et protection du lien symbolique du composant final là où l'OS le prend en charge
  • Mise à jour automatique avec vérification de l'URL distante (--update)
  • Corps JSON--data '{"template":"FUZZ"}'
    Valeur imbriquée--header "Cookie: sid=abc; lang=FUZZ"