Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Panoptic — Panoptic — это инструмент для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс поиска и получения содержимого распространённых файлов журналов и конфигурационных файлов через уязвимости path traversal. | Kitploit
Инструменты/GitHubGitHub/lightos/panoptic
РазведкаСканеры уязвимостейЭксплуатация веб-приложенийСбор информацииТестирование на Проникновение
GitHublightos/panoptic

Panoptic

Panoptic — это инструмент для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс поиска и получения содержимого распространённых файлов журналов и конфигурационных файлов через уязвимости path traversal.

Репозиторий
3257422 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Panoptic

Panoptic Logo

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

Panoptic — инструмент тестирования на проникновение с открытым исходным кодом, автоматизирующий поиск и получение распространённых лог- и конфигурационных файлов через уязвимости обхода пути (path traversal).

Panoptic Demo

Возможности

  • Асинхронное конкурентное сканирование с настраиваемым пулом воркеров (--concurrency)
  • Автоматическое обнаружение распространённых лог- и конфигурационных файлов через инъекции на основе параметров, пути, POST, cookie, заголовков и JSON-тела запроса
  • Маркер FUZZ для произвольных точек инъекции — поместите FUZZ в любое значение --header или --data
  • Кодирование Base64 для конечных точек, декодирующих пути к файлам (--base64)
  • Автоматическое определение ОС с возможностью ограничить дальнейшие сканы
  • Эвристическое сравнение ответов с фильтрацией по коду состояния для снижения числа ложных срабатываний
  • Динамическая инъекция с учётом регистра — извлечение файлов домашних каталогов из /etc/passwd, файлов binlog из mysql-bin.index
  • Несколько форматов вывода: текст (rich), JSON, CSV (--output-format)
  • Поддержка возобновления/контрольных точек для длительных сканов (--resume-file)
  • TOML-конфиги для постоянных настроек (--config)
  • Множество техник обхода traversal: префиксы, постфиксы, множители, замена слэшей, двойное кодирование

Требования

  • Python 3.10+
  • Git
  • Зависимости: httpx[socks], rich, rich-argparse и tomli на Python 3.10

Установка

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

В командной строке Windows активируйте через .venv\Scripts\activate.bat; в PowerShell используйте .venv\Scripts\Activate.ps1. Редактируемая установка сохраняет связь Panoptic с этим каталогом для --update, поэтому не удаляйте каталог. Не выполняйте pip install panoptic: это имя на PyPI принадлежит не связанному проекту.

Для разработки:

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

Использование

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

Примеры

Базовая LFI через параметр

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

Инъекция через POST-данные

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

LFI на основе пути

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

Параметр в Base64

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

Инъекция в cookie (маркер FUZZ)

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

Инъекция в JSON-тело (маркер FUZZ)

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

Инъекция в пользовательский заголовок (маркер FUZZ)

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

Параметр расширения

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

Обход фильтра с префиксом

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

Фильтрация сканов

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

JSON-вывод с поддержкой возобновления

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

Прокси с игнорированием ошибок SSL

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

Список доступных фильтров

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

Комплексное сканирование

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

Маркер FUZZ

Поместите FUZZ в любое место значений --header или --data, чтобы указать точку инъекции. Panoptic заменяет FUZZ на каждый путь к файлу в процессе сканирования. Это позволяет тестировать точки инъекции, недоступные для --param:

Тип инъекцииПример
Значение cookie--header "Cookie: theme=FUZZ"
Пользовательский заголовок--header "X-Include: FUZZ"

При наличии FUZZ параметр --param не требуется.

Конфигурация

Panoptic поддерживает TOML-конфиги для постоянных настроек:

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

Расположение конфига по умолчанию: ~/.config/panoptic/config.toml (загружается автоматически при наличии, даже без --config).

root@kitploit:~
[defaults]
# Здесь принимается любое длинное имя опции (с дефисами в виде подчёркиваний),
# включая цель и пути вывода.
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"]

Приоритет: аргументы CLI > файл конфигурации > встроенные значения по умолчанию.

Поддерживаемые в конфиге опции цели и вывода

Таблица [defaults] принимает любую опцию сканирования, а не только настройку производительности. В частности, можно сохранить:

  • url — цель по умолчанию (переопределяется при каждом запуске через --url)
  • output_format, output_file — куда направляются машиночитаемые результаты
  • log_file — зеркалирование вывода консоли в файл
  • resume_file — расположение контрольной точки для возобновляемых сканов

Чувствительные артефакты, записываемые Panoptic — файл журнала, файл вывода результатов/списка и любые файлы, сохранённые через --write-files, — на POSIX принудительно получают права 0600 только для владельца. На платформах с O_NOFOLLOW также атомарно отклоняется уже существующая символьная ссылка в конечном компоненте пути. На платформах без O_NOFOLLOW Panoptic выполняет проверку символических ссылок/junction до открытия файла с максимально возможным качеством, но такая проверка не устраняет состояние гонки. Биты режима в Windows не настраивают ACL NTFS, поэтому используйте соответствующий ограниченный каталог, если артефакты могут содержать чувствительные данные.

Переопределение булевых значений конфига в командной строке

У каждого булева флага есть парный --no-, поэтому значение, установленное в true в файле конфигурации, можно отключить для одного запуска без редактирования файла:

root@kitploit:~
# config.toml задаёт verbose = true и automatic = true
panoptic --url "http://target/x.php?file=test.txt" --no-verbose --no-auto

Поскольку опущенный булев флаг остаётся неустановленным (а не принимает значение по умолчанию false), значение из конфига используется до тех пор, пока вы явно не передадите флаг или его форму --no-.

Прокси

Направляйте трафик через HTTP(S) или SOCKS-прокси:

root@kitploit:~
panoptic --url "https://target/x.php?file=test.txt" \
  --proxy "socks5://127.0.0.1:9050"
  • Поддерживаемые схемы: http://, https://, socks5://, socks5h:// (socks5h выполняет разрешение DNS через прокси — полезно для Tor и для предотвращения утечек DNS в локальной сети). SOCKS4 не поддерживается базовым HTTP-клиентом. Схема и хост проверяются до начала сканирования.
  • Поддержка SOCKS обеспечивается дополнением httpx[socks], которое устанавливается по умолчанию.
  • По умолчанию Panoptic учитывает стандартные переменные окружения HTTP_PROXY / HTTPS_PROXY / NO_PROXY. Передайте --ignore-proxy, чтобы обойти их и подключиться напрямую (это также отключает прокси, заданные окружением).
  • Комбинируйте с --invalid-ssl при перехвате HTTPS через прокси с собственным CA. Это отключает проверку сертификатов и небезопасно в недоверенных сетях.

Развёртывание версий (--all-versions)

Некоторые встроенные пути являются шаблонами версий (например, каталоги релизов JBoss, записанные как [JBOSS]). По умолчанию такие строки-шаблоны пропускаются, поскольку буквальный путь [JBOSS] не может соответствовать реальному файлу. Передача --all-versions разворачивает каждый шаблон по встроенному списку версий, добавляя по одному конкретному пути на каждую известную версию — это гораздо более масштабное, но и более тщательное сканирование:

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

Сравнение ответов

Panoptic не классифицирует путь только по заголовку Content-Length, контролируемому целью. Он сравнивает полное нормализованное тело ответа с базовым ответом для несуществующего пути. Дешёвая верхняя граница сходства позволяет избежать полного сравнения только тогда, когда уже можно доказать, что тела различаются; неоднозначные ответы используют точное отношение, чтобы избежать ложноотрицательных результатов из-за перестановки частей тела.

Возобновление / контрольные точки

--resume-file PATH записывает выполненные случаи, чтобы прерванный скан мог продолжиться с места остановки:

root@kitploit:~
panoptic --url "http://target/x.php?file=test.txt" \
  --resume-file scan.checkpoint
# ... прервите с помощью Ctrl-C, затем повторно выполните ту же команду для возобновления

Контрольная точка хранит только идентификаторы завершённых случаев и SHA-256 отпечаток определения скана (URL, параметры инъекции, параметры обнаружения, заголовки, cookie, User-Agent и точный набор случаев). Она никогда не хранит учётные данные, заголовки или URL в открытом виде.

При возобновлении отпечаток пересчитывается и сравнивается. Если что-либо, способное изменить смысл скана, отличается — другая цель, параметр, заголовок, cookie, набор фильтров или переключатель --all-versions, — контрольная точка отклоняется с предупреждением, и скан начинается заново, поэтому устаревшая контрольная точка никогда не приведёт к молчаливому пропуску случаев из другого скана. Устаревшие контрольные точки в виде простого списка принимаются с предупреждением и ограничиваются идентификаторами случаев, присутствующих в текущем скане; поскольку в этом старом формате нет отпечатка, пользователям следует заменить его на новый формат. Неудачные (из-за сетевой ошибки) запросы намеренно не заносятся в контрольную точку, поэтому они повторяются при возобновлении.

Версия и обновление

root@kitploit:~
panoptic --version   # вывести установленную версию и завершиться
panoptic --update    # быстрое обновление из официального GitHub-репозитория

--update работает только из git-копии, чей удалённый origin использует HTTPS или SSH и совпадает с официальным вышестоящим репозиторием (проверяется до загрузки, чтобы противостоять небезопасной или подменённой конфигурации удалённого репозитория). Он выполняет fast-forward ветки main из явной вышестоящей ссылки main. Установки вне git-копии можно безопасно обновить из официального GitHub-архива:

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

При запуске из git-копии баннер также показывает текущую короткую ревизию git.

Коды завершения

Panoptic использует стандартные коды завершения процессов, что позволяет использовать его в скриптах:

  • 0 — Успех: скан (или --list / --update) завершён. Отдельные запросы, исчерпавшие попытки, отмечаются предупреждением и остаются доступными для возобновлённого скана, но не приводят к сбою в остальном успешного запуска.
  • 1 — Некорректное использование: отсутствуют или недопустимы аргументы, либо не удалось найти инъекционный параметр.
  • 2 — Эксплуатационный сбой: невозможно подключиться, нет подходящих тестовых случаев, все поставленные в очередь запросы завершились ошибкой, или возник сбой воркера, контрольной точки, записи вывода или конфигурации.
  • 130 — Прервано пользователем (Ctrl-C / SIGINT).

Участие в разработке

Вклад приветствуется! Пожалуйста, открывайте issues или pull requests на GitHub.

Тестовый стенд

Для безопасного, воспроизводимого сквозного тестирования см. Panoptic LFI Testbed. Он предоставляет намеренно уязвимые конечные точки, покрывающие поддерживаемые Panoptic методы инъекции и преобразования обхода пути.

Лицензия

Этот проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.

Скачать инструмент
  • Поддержка HTTP/HTTPS и SOCKS5-прокси с проверкой
  • Поддержка случайного или пользовательского User-Agent, cookie и заголовков
  • Редактирование учётных данных в баннере, логе и машиночитаемом выводе (включая числовые и булевы значения в JSON-теле)
  • Чувствительные артефакты защищаются правами 0600 только для владельца на POSIX и защитой от символьных ссылок в конечном компоненте там, где ОС это поддерживает
  • Самообновление с проверкой удалённого URL (--update)
  • JSON-тело--data '{"template":"FUZZ"}'
    Вложенное значение--header "Cookie: sid=abc; lang=FUZZ"