
PoC-эксплойт для UniFi OS CVE-2026-34910 — обход аутентификации, позволяющий выполнять инъекцию команд/RCE, и CVE-2026-34909 — path traversal для произвольного чтения файлов.
Доказательство концепции для авторизованного тестирования двух векторов, обозначенных как:
CVE-2026-34910: обход аутентификации, который может привести к внедрению команд и удалённому выполнению кода через обработчик обновления пакетов.CVE-2026-34909: path traversal, который может привести к произвольному чтению файлов через алиас app-assets.Скрипт предназначен для проверки безопасности на устройствах и в сетях, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Не используйте его против систем третьих лиц.
1.0.0Значения CVSS и статус уязвимостей перед использованием в отчётах необходимо сверять с рекомендациями вендора и соответствующими версиями прошивки.
Скрипт может отправлять команды на целевое устройство и читать содержимое файлов с него. Возможные последствия включают изменение системы, раскрытие чувствительной информации, нарушение работы сервисов или повреждение данных.
Перед проведением тестирования:
Скрипт использует только стандартную библиотеку Python, поэтому дополнительные шаги по установке пакетов не требуются.
Клонируйте репозиторий или скопируйте скрипт на тестовую машину, затем перейдите в каталог проекта:
git clone <URL-REPOSITORI>
cd CVE-2026-34910
Установка через pip install не требуется. Убедитесь, что используется подходящий интерпретатор:
python3 --version
Общий формат:
python3 CVE-2026-34910.py <target> [command] [options]
target должен быть URL со схемой http:// или https://, например https://192.0.2.10:11443.
Запуск probe без отправки дополнительных команд:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check
Второй позиционный аргумент интерпретируется как команда, отправляемая на целевое устройство. Используйте только согласованные неразрушающие команды:
python3 CVE-2026-34910.py https://192.0.2.10:11443 "id"
Опция --proof запрашивает создание proof-файла на целевом устройстве в /tmp/PWNED_34910:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --proof
Проверьте и удалите proof-файл через согласованную процедуру доступа. Не считайте HTTP-ответ 200 единственным доказательством успешного выполнения команды.
python3 CVE-2026-34910.py https://192.0.2.10:11443 --read /etc/hostname
Скрипт выводит не более 800 символов ответа с содержимым файла.
Добавьте --verbose или -v, чтобы увидеть детали запросов и ответов:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check --verbose
Обратите внимание, что подробный вывод (verbose) может содержать чувствительные URL, параметры или данные ответов.
| Параметр | Описание |
|---|---|
target | Целевой URL со схемой HTTP или HTTPS |
command | Команда, тестируемая через вектор CVE-2026-34910 |
--check | Запускает только probe обхода аутентификации |
--proof | Запрашивает создание proof-файла на целевом устройстве |
--read PATH | Тестирует чтение файлов через path traversal |
-v, --verbose | Показывает дополнительную отладочную информацию |
-h, --help | Показывает справку по использованию |
Используйте только один режим работы за один запуск. Программа возвращает код выхода 0, если операция считается успешной, 1, если целевое устройство не выглядит уязвимым или аргументы неполны, и 2 в случае непредвиденной ошибки. Прерывание пользователем возвращает 130.
--check проверяет ответ на наличие маркера, указывающего, что обработчик был достигнут.pkg_name и отправляет его на endpoint обновления пакетов.--read формирует path traversal к алиасу app-assets и отображает ответ в ограниченном виде.Реализация полностью находится в CVE-2026-34910.py.
200 в режиме RCE означает, что запрос принят обработчиком, но не гарантирует, что команда выполнилась ожидаемым образом.Для устройств, входящих в scope тестирования:
В отчёте о тестировании рекомендуется фиксировать:
Для ответственного раскрытия уязвимостей используйте официальный канал безопасности вендора и координируйте раскрытие в соответствии с действующей политикой.
Для этого проекта лицензия ещё не определена. Добавьте файл лицензии перед распространением или использованием этого кода в других проектах.
Gagaltotal666 - GhostGTR666
Связанный репозиторий: github.com/gagaltotal