Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Panoptic — Panoptic es una herramienta de pruebas de penetración de código abierto que automatiza el proceso de búsqueda y recuperación de contenido de archivos de registro y configuración comunes mediante vulnerabilidades de path traversal. | Kitploit
Herramientas/GitHubGitHub/lightos/panoptic
ReconocimientoEscáneres de VulnerabilidadesExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de Penetración
GitHublightos/panoptic

Panoptic

Panoptic es una herramienta de pruebas de penetración de código abierto que automatiza el proceso de búsqueda y recuperación de contenido de archivos de registro y configuración comunes mediante vulnerabilidades de path traversal.

Ver Repositorio
325745hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Panoptic

Panoptic Logo

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

Panoptic es una herramienta de pruebas de penetración de código abierto que automatiza la búsqueda y recuperación de archivos de registro y configuración comunes mediante vulnerabilidades de path traversal.

Panoptic Demo

Características

  • Escaneo concurrente asíncrono con pool de workers configurable (--concurrency)
  • Descubrimiento automático de archivos de registro y configuración comunes mediante inyección por parámetro, por ruta, POST, cookie, cabecera y cuerpo JSON
  • Marcador FUZZ para puntos de inyección arbitrarios: coloca FUZZ en cualquier valor de --header o --data
  • Codificación Base64 para endpoints que decodifican rutas de archivo (--base64)
  • Detección automática del sistema operativo con opción de restringir escaneos posteriores
  • Comparación heurística de respuestas con filtrado por código de estado para reducir falsos positivos
  • Inyección dinámica de casos: analiza /etc/passwd para archivos del directorio personal, mysql-bin.index para archivos binlog
  • Múltiples formatos de salida: texto (rich), JSON, CSV (--output-format)
  • Soporte de reanudación/checkpoint para escaneos de larga duración (--resume-file)
  • Archivos de configuración TOML para ajustes persistentes (--config)

Requisitos

  • Python 3.10+
  • Git
  • Dependencias: httpx[socks], rich, rich-argparse y tomli en Python 3.10

Instalación

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

En el Símbolo del sistema de Windows, activa con .venv\Scripts\activate.bat; en PowerShell, usa .venv\Scripts\Activate.ps1. La instalación editable mantiene Panoptic vinculado a este checkout para --update, así que conserva el directorio en su lugar. No ejecutes pip install panoptic: ese nombre en PyPI pertenece a un proyecto no relacionado.

Para desarrollo:

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

Uso

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

Ejemplos

LFI básico basado en parámetros

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

Inyección de datos POST

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

LFI basado en ruta

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

Parámetro codificado en Base64

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

Inyección en cookie (marcador FUZZ)

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

Inyección en cuerpo JSON (marcador FUZZ)

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

Inyección en cabecera personalizada (marcador FUZZ)

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

Parámetro de extensión

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

Bypass de filtro con prefijo

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

Escaneos filtrados

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

Salida JSON con soporte de reanudación

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

Proxy con errores SSL ignorados

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

Listar filtros disponibles

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

Escaneo exhaustivo

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

Marcador FUZZ

Coloca FUZZ en cualquier valor de --header o --data para marcar el punto de inyección. Panoptic reemplaza FUZZ con cada ruta de archivo durante el escaneo. Esto permite probar puntos de inyección a los que --param no puede acceder:

Tipo de inyecciónEjemplo
Valor de cookie--header "Cookie: theme=FUZZ"
Cabecera personalizada--header "X-Include: FUZZ"

Cuando FUZZ está presente, --param no es obligatorio.

Configuración

Panoptic admite archivos de configuración TOML para ajustes persistentes:

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

Ubicación predeterminada de la configuración: ~/.config/panoptic/config.toml (se carga automáticamente si existe, incluso sin --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"]

Prioridad: argumentos CLI > archivo de configuración > valores predeterminados integrados.

Opciones de destino y salida soportadas por la configuración

La tabla [defaults] acepta cualquier opción de escaneo, no solo ajustes de rendimiento. En particular, puedes persistir:

  • url — el destino predeterminado (anula por ejecución con --url)
  • output_format, output_file — dónde van los resultados legibles por máquina
  • log_file — refleja la salida de consola en un archivo
  • resume_file — ubicación del checkpoint para escaneos reanudables

Los artefactos sensibles escritos por Panoptic — el archivo de registro, el archivo de salida de resultados/listado y cualquier archivo guardado con --write-files — se fuerzan a permisos 0600 solo para el propietario en POSIX. Las plataformas que exponen O_NOFOLLOW también rechazan atómicamente un symlink preexistente en el componente final de la ruta. En plataformas sin O_NOFOLLOW, Panoptic realiza una comprobación de symlink/junction antes de abrir con el mejor esfuerzo, pero la comprobación no puede eliminar una condición de carrera. Los bits de modo de Windows no configuran las ACL de NTFS, así que usa un directorio con restricciones adecuadas cuando los artefactos puedan contener datos sensibles.

Sobrescribir booleanos de la configuración en la línea de comandos

Cada flag booleano tiene su contraparte --no-, por lo que un valor establecido en true en el archivo de configuración se puede desactivar para una sola ejecución sin editar el archivo:

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

Dado que un flag booleano omitido se deja sin establecer (en lugar de usar false por defecto), el valor de la configuración se utiliza a menos que pases el flag o su forma --no- explícitamente.

Uso de proxy

Enruta el tráfico a través de un proxy HTTP(S) o SOCKS:

root@kitploit:~
panoptic --url "https://target/x.php?file=test.txt" \
  --proxy "socks5://127.0.0.1:9050"
  • Esquemas aceptados: http://, https://, socks5://, socks5h:// (socks5h resuelve DNS a través del proxy — útil para Tor y para evitar fugas de DNS local). SOCKS4 no está soportado por el cliente HTTP subyacente. El esquema y el host se validan antes de que comience el escaneo.
  • El soporte SOCKS proviene del extra httpx[socks], que se instala por defecto.
  • Por defecto, Panoptic respeta las variables de entorno estándar HTTP_PROXY / HTTPS_PROXY / NO_PROXY. Pasa --ignore-proxy para omitirlas y conectar directamente (esto también desactiva cualquier proxy configurado mediante variables de entorno).
  • Combínalo con --invalid-ssl al interceptar HTTPS a través de un proxy con su propia CA. Esto desactiva la verificación de certificados y no es seguro en redes no confiables.

Expansión de versiones (--all-versions)

Algunas rutas incluidas son plantillas de versión (por ejemplo, directorios de versiones de JBoss escritos como [JBOSS]). Por defecto, estas filas de plantilla se omiten, porque una ruta literal [JBOSS] nunca puede coincidir con un archivo real. Pasar --all-versions expande cada plantilla contra la lista de versiones incluida, añadiendo una ruta concreta por versión conocida: un escaneo mucho más grande pero mucho más exhaustivo:

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

Comparación de respuestas

Panoptic no clasifica una ruta basándose únicamente en la cabecera Content-Length controlada por el objetivo. Compara el cuerpo normalizado completo con la línea base de ruta no válida. Un límite superior de similitud barato evita la comparación completa solo cuando ya puede demostrar que los cuerpos difieren; las respuestas ambiguas usan la proporción exacta para evitar falsos negativos por cuerpos reordenados.

Reanudación / Checkpoints

--resume-file PATH registra los casos completados para que un escaneo interrumpido pueda continuar donde se quedó:

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

El checkpoint almacena solo los IDs de casos completados junto con una huella SHA-256 de la definición del escaneo (URL, parámetros de inyección, opciones de detección, cabeceras, cookie, User-Agent y el conjunto exacto de casos). Nunca almacena credenciales, cabeceras ni URLs en texto plano.

Al reanudar, la huella se recalcula y se compara. Si algo que cambiaría el significado del escaneo difiere — un destino, parámetro, cabecera, cookie, conjunto de filtros o el interruptor --all-versions distinto — el checkpoint se rechaza con una advertencia y el escaneo comienza desde cero, de modo que un checkpoint obsoleto nunca puede omitir silenciosamente casos de un escaneo diferente. Los checkpoints heredados de lista simple se aceptan con una advertencia y se restringen a los IDs de casos presentes en el escaneo actual; como ese formato antiguo no tiene huella, los usuarios deberían reemplazarlo por el formato recién escrito. Las solicitudes fallidas (error de red) deliberadamente no se guardan en el checkpoint para que se reintenten al reanudar.

Versión y actualización

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

--update solo funciona desde un checkout de git cuyo remoto origin use HTTPS o SSH y coincida con el upstream oficial (verificado antes de hacer pull, para resistir configuraciones remotas inseguras o manipuladas). Hace un fast-forward de la rama main del checkout desde la ref explícita main del upstream. Las instalaciones que no son checkout se pueden actualizar de forma segura desde el archivo oficial de GitHub:

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

Cuando se ejecuta desde un checkout, el banner también muestra la revisión corta actual de git.

Códigos de salida

Panoptic usa códigos de salida de proceso convencionales para poder ser scripteado:

  • 0 — Éxito: el escaneo (o --list / --update) se completó. Las solicitudes individuales que agotan sus reintentos se advierten y siguen siendo elegibles para un escaneo reanudado, pero no hacen fallar una ejecución que por lo demás fue exitosa.
  • 1 — Uso no válido: argumentos faltantes o no válidos, o no se pudo encontrar ningún parámetro inyectable.
  • 2 — Falla operativa: no se puede conectar, no hay casos de prueba coincidentes, todas las solicitudes en cola fallaron, o falló un worker, checkpoint, escritura de salida o configuración.
  • 130 — Interrumpido por el usuario (Ctrl-C / SIGINT).

Contribuciones

¡Las contribuciones son bienvenidas! Abre issues o pull requests en GitHub.

Entorno de pruebas (Testbed)

Para pruebas de extremo a extremo seguras y reproducibles, consulta el Panoptic LFI Testbed. Proporciona endpoints deliberadamente vulnerables que cubren los métodos de inyección y las transformaciones de traversal soportadas por Panoptic.

Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulta el LICENSE para más detalles.

Descargar herramienta
  • Múltiples técnicas de bypass de traversal: prefijos, sufijos, multiplicador, sustitución de barras, doble codificación
  • Soporte de proxy HTTP/HTTPS y SOCKS5 con validación
  • Soporte de User-Agent, cookie y cabecera aleatorios o personalizados
  • Redacción de credenciales en el banner, el registro y la salida legible por máquina (incluidos valores numéricos y booleanos del cuerpo JSON)
  • Artefactos sensibles protegidos con permisos 0600 solo para el propietario en POSIX y protección de symlinks en el componente final cuando el sistema operativo lo soporta
  • Autoactualización con verificación remota de URL (--update)
  • Cuerpo JSON--data '{"template":"FUZZ"}'
    Valor anidado--header "Cookie: sid=abc; lang=FUZZ"