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

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

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

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

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

Категории

Все категории
Loading categories
cve-2026-0300-audit — Инструмент аудита только для чтения для CVE-2026-0300 (экспонирование портала аутентификации User-ID в PAN-OS) | Kitploit
Инструменты/GitHubGitHub/tailwindrg/cve-2026-0300-audit
Безопасность облачной инфраструктурыАнализ уязвимостейСкриптинг и автоматизацияАудит конфигурацииСетевая безопасностьDevSecOps
GitHubtailwindrg/cve-2026-0300-audit

cve-2026-0300-audit

Инструмент аудита только для чтения для CVE-2026-0300 (экспонирование портала аутентификации User-ID в PAN-OS)

Репозиторий
3 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Инструментарий аудита CVE-2026-0300

Инструментарий аудита только для чтения для CVE-2026-0300 — неаутентифицированное переполнение буфера в портале аутентификации User-ID PAN-OS (ранее известном как «Captive Portal») на межсетевых экранах серий PA и VM.

Этот репозиторий сопровождает бюллетень безопасности Tailwind Resource Group TRG-SA-2026-003 и предоставляет:

  • audit_portal.py — уровень 1: аудит одного межсетевого экрана
  • audit_fleet.py — уровень 2: массовое сканирование парка через Panorama (параллельно)
  • panos_audit.py — общая библиотека, используемая обоими CLI

Скрипты работают только на чтение. Они выполняют запросы вида show к XML API PAN-OS и никогда не изменяют конфигурацию. Ключ API передаётся через HTTP-заголовок X-PAN-KEY, а не как параметр URL-запроса, поэтому он не появляется в журналах доступа плоскости управления PAN, журналах прокси с TLS-инспекцией или в аргументах процесса аудитора.

Зачем это существует

В записи CVE используется современное название функции «User-ID Authentication Portal». Схема XML PAN-OS, параметры CLI и пути URL документации по-прежнему используют устаревшую лексику captive-portal. Операторы, проверяющие парки с помощью show config running | match authentication-portal, молча пропустят всю конфигурацию, поскольку эта строка никогда не появляется как элемент конфигурации. Этот инструментарий ищет имя элемента, соответствующее схеме, независимо от того, когда была создана конфигурация.

Полный анализ Tailwind этой особенности именования приведён в TRG-SA-2026-003, «Устаревший след Captive Portal».

Требования

  • Python 3.10 или новее
  • Только стандартная библиотека — pip install не требуется
  • Ключ API PAN-OS с доступом на чтение к межсетевому экрану (или, для уровня 2, к Panorama)
  • Сертификат, подписанный CA (или доверенный оператором), на интерфейсе управления межсетевого экрана; флаг --insecure предусмотрен только для разовых аудитов при первоначальном развёртывании

Уровень 1 — один межсетевой экран

root@kitploit:~
export PAN_API_KEY="<key>"
./audit_portal.py --hostname fw1.example.com

Пример табличного вывода:

root@kitploit:~
vsys: vsys1
  configured:    True
  enabled:       True
  redirect_host: auth-portal.internal.example.com
  mode:          redirect
  bound:         ethernet1/3(internal-trust), ethernet1/4(guest)
  tls_verified:  True
  risk:          EXPOSED_LIKELY

Другие форматы вывода: --output json или --output csv.

Другие флаги: --vsys <name> для аудита одного vsys, --timeout/--retries для медленных вышестоящих систем, --debug для подробных сведений об ошибках в stderr.

Уровень 2 — массовое сканирование парка через Panorama

root@kitploit:~
export PAN_API_KEY="<panorama-key>"
./audit_fleet.py --hostname panorama.example.com --workers 16 --output csv > fleet-audit.csv

Каждая строка в CSV — это одно устройство-vsys со статусом портала, хостом перенаправления, режимом, привязками интерфейсов и классификацией риска. Скрипт использует параметр API Panorama target=<serial>, поэтому он никогда не подключается к управляемым межсетевым экранам напрямую — одно подключение к Panorama сканирует весь парк.

Примечательные флаги:

  • --workers N — параллельные потоки аудита (по умолчанию 8, максимум 32). Парк из 1000 устройств обрабатывается за минуты, а не за час и более, как при последовательном сканировании.
  • --timeout, --retries — настройки на каждый вызов API. Временные URLError и HTTP 5xx повторяются с ограниченной экспоненциальной задержкой.
  • --exclude-disconnected — по умолчанию отключённые устройства включаются с risk=DISCONNECTED, чтобы они оставались видимыми в период установки исправлений. Используйте этот флаг, чтобы исключить их.
  • --min-expected-devices N — предупреждение (stderr), если Panorama возвращает меньше устройств, чем N. Полезно для обнаружения усечения ответа при известном размере парка.
  • --serial-filter '0007*' — фильтрация по серийному номеру с подстановочными знаками для аудита подмножества.
  • --debug — вывод подробных сведений об ошибках по каждому устройству в stderr (включая строки reason от вышестоящей системы; по умолчанию выключено, чтобы не раскрывать имена хостов в CSV для клиентов).

Классификация риска

Столбец risk в выводе принимает одно из следующих значений:

МеткаЗначение
INFO_NOT_CONFIGUREDБлок <captive-portal> на устройстве отсутствует. Вне области действия CVE-2026-0300.
INFO_DISABLEDПортал настроен, но enabled=no. Уязвимый путь кода неактивен.
REVIEW_POLICY_NO_BINDINGSПортал включён, но привязки интерфейсов в конфигурации не найдены. Проверьте через WebUI.
EXPOSED_LIKELYПортал включён и привязан к зоне, имя которой указывает на недоверенную доступность (untrust, dmz, guest, external, internet, wan, public). Исследуйте в первую очередь.
REVIEW_POLICYПортал включён и привязан к зонам с внутренними именами. Проверьте политику безопасности, чтобы подтвердить достижимость.

EXPOSED_LIKELY — это подсказка, а не вердикт — имена зон являются соглашениями оператора, а не принудительным механизмом. Скрипт не может заменить анализ политики безопасности; он сортирует вывод парка так, чтобы внимание сначала направлялось туда, где оно необходимо.

Что скрипты делают — и чего не делают

Делают:

  • Запрашивают блоки <captive-portal> для каждого vsys (имя элемента схемы всегда captive-portal, независимо от названия в интерфейсе или версии PAN-OS).
  • Сообщают о включённом/отключённом состоянии, хосте перенаправления, режиме и привязках интерфейсов с разрешением зон.
  • Классифицируют риск по эвристике имён зон, чтобы строки EXPOSED_LIKELY появлялись первыми в выводе парка.
  • Отправляют ключ API через заголовок X-PAN-KEY, чтобы он не попадал в журналы доступа URL и аргументы процесса.
  • Ограничивают размер тела ответа (50 МБ) для защиты от атак расширения сущностей на XML-парсер.
  • Повторяют временные ошибки с ограниченной экспоненциальной задержкой.

Не делают:

  • Не анализируют политику безопасности всесторонне. Доступность портала из недоверенной сети зависит от правил политики, NAT и привязок зон — оператор должен завершить этот анализ на основе вывода аудита.
  • Не проверяют достижимость сетевыми зондами. Только чистый аудит конфигурации.
  • Не изменяют никакую конфигурацию. Все вызовы API доступны только для чтения.

Генерация ключа API PAN-OS

Ключ API PAN-OS наследует роль и разрешения пользователя, который его генерирует.

Важное предостережение: в PAN-OS не существует разрешения XML API только для чтения.

Разрешения роли администратора на вкладке XML API являются бинарными «Включено/Выключено» для каждой категории — Configuration, Operational Requests, Commit, Export, Import, Report, Log, User-ID Agent. Включение Configuration для XML API разрешает как show, так и set/edit/delete/move/rename/clone. Включение Operational Requests разрешает произвольные операции <request>, включая <request><restart>. Вкладки Web UI и REST API предлагают вариант «Только чтение»; вкладка XML API — нет.

«Пользователь аудита», созданный включением этих категорий XML API, обладает полными правами записи XML API на устройстве. Относитесь к полученному ключу как к привилегированному учётному данным: ограничьте срок его действия окном аудита, храните в менеджере секретов и отключите пользователя по завершении работы.

Каноническая справка PAN: Get Your API Key (PAN-OS XML API).

Через WebUI

На межсетевом экране (или Panorama, если вы используете audit_fleet.py):

  1. Создайте роль администратора. Перейдите в Device > Admin Roles (или Panorama > Admin Roles). Нажмите Add.

    • Назовите роль, например, audit-config-and-op.
    • На вкладке Web UI установите всё в None (доступ к интерфейсу не нужен для пользователя аудита).
    • На вкладке XML API включите Configuration и Operational Requests. Оставьте Commit, Export, Import, Report, Log и User-ID Agent отключёнными.
    • Нажмите OK. Полученная роль предоставляет полные полномочия XML API на Configuration и Operational Requests — см. предостережение выше.
  2. Создайте пользователя аудита. Перейдите в Device > Administrators (или Panorama > Administrators). Нажмите Add.

    • Имя: например, audit-cve-2026-0300.
    • Задайте надёжный пароль или привяжите к профилю аутентификации.
    • Тип администратора: Role Based → выберите audit-config-and-op.
    • Нажмите OK, затем Commit для промежуточной конфигурации.
  3. Сгенерируйте ключ API с учётными данными нового пользователя. PAN-OS не предоставляет кнопку «сгенерировать ключ API» в WebUI — поддерживаемый путь — это конечная точка keygen. Используйте тело POST, чтобы учётные данные не попадали в журналы доступа URL:

    root@kitploit:~
    read -rs AUDIT_PW; echo
    export PAN_API_KEY="$(curl -ksX POST "https://fw1.example.com/api/" \
      --data-urlencode "type=keygen" \
      --data-urlencode "user=audit-cve-2026-0300" \
      --data-urlencode "password=$AUDIT_PW" \
      | grep -oE '<key>[^<]+' | cut -c6-)"
    unset AUDIT_PW
    

    read -rs считывает пароль без вывода его на терминал и без помещения в историю оболочки. Скрипт считывает полученный PAN_API_KEY из окружения и отправляет его через HTTP-заголовок X-PAN-KEY — ни пароль, ни ключ не появляются в журналах доступа URL или в ps auxww во время работы скрипта.

  4. Отключите пользователя по завершении работы аудита. Перейдите в Device > Administrators, найдите audit-cve-2026-0300, нажмите Delete (или отключите пользователя). Выполните Commit. Это аннулирует все ключи, сгенерированные для этого пользователя.

Замечания по усилению безопасности

  • Не допускайте попадания пароля и ключа в историю оболочки. read -rs покрывает пароль. Для ключа в PAN_API_KEY предпочтительнее задавать его интерактивно через приведённый выше фрагмент, а не вставлять из файла. Если необходимо загрузить его из файла, используйте set +o history для сеанса.
  • Используйте сертификат, подписанный CA, на интерфейсе управления межсетевого экрана. Флаг --insecure в обоих скриптах аудита полностью отключает проверку имени хоста TLS и проверку сертификата. Любой атакующий на пути может выполнить MITM ответа аудита и сообщить portal_enabled=False для скомпрометированного устройства. Скрипт audit_fleet.py требует --accept-mitm-risk вместе с --insecure для массовых сканирований, поскольку радиус поражения подделанного ответа охватывает весь парк.
  • Ротируйте ключ по завершении. Отключение или удаление пользователя аудита аннулирует все ключи, сгенерированные под этим пользователем.

Коды выхода

  • 0 — портал не включён ни на одном проверенном vsys
  • 2 — vsys не найден (временная или неподдерживаемая конфигурация)
  • 3 — портал включён хотя бы на одном vsys (требуется проверка)
  • 4 — сбой вызова API (аутентификация, TLS, сеть)

Ненулевой код выхода при «портале включён» является намеренным — он позволяет подключить скрипт к конвейерам CI / массового сканирования, которым нужен чёткий сигнал.

Лицензия

Лицензировано на условиях Apache License, Version 2.0. Полные условия см. в LICENSE.

Коммерческое использование разрешено; требуется указание авторства (сохраняйте уведомление об авторских правах и файл лицензии в производных работах).

Copyright 2026 Tailwind Resource Group.

См. также

  • TRG-SA-2026-003 — бюллетень безопасности Tailwind Resource Group для CVE-2026-0300
  • PAN PSIRT — https://security.paloaltonetworks.com/CVE-2026-0300
  • Рекомендации PAN (ограничение доступа к порталу) — https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA14u000000CqbiCAC
  • Tailwind Resource Group — https://tailwindrg.com
Скачать инструмент