Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-34908-check — Detectar com segurança se um servidor UniFi OS é vulnerável ao CVE-2026-34908. | Kitploit
Ferramentas/GitHubGitHub/bishopfox/cve-2026-34908-check
ReconhecimentoScanners de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesTestes de Penetração
GitHubbishopfox/cve-2026-34908-check

CVE-2026-34908-check

Detectar com segurança se um servidor UniFi OS é vulnerável ao CVE-2026-34908.

Ver Repositório
664há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Script de Detecção de Cadeia RCE Não Autenticada no UniFi OS Server

Um detector seguro para a cadeia de execução remota de código não autenticada no UniFi OS Server ≤ 5.0.6, divulgada no Boletim de Aviso de Segurança 064 da Ubiquiti:

CVEClassePapel na cadeia
CVE-2026-34908 / CVE-2026-34909Controle de acesso inadequado / path traversalBypass do gateway de autenticação (a base)
CVE-2026-34910Validação inadequada de entrada → injeção de comandoRCE não autenticada alcançada através do bypass

Corrigido no UniFi OS Server 5.0.8.

É seguro executar?

Sim. O detector foi projetado para uso em produção e avaliação:

  • Nenhum comando é executado. A sonda alcança o endpoint vulnerável sem um parâmetro obrigatório, então o manipulador rejeita a entrada ausente e confirmamos o bug a partir desse erro de validação.
  • Nenhum estado do alvo é alterado. Cada requisição é um GET simples.
  • Proteção contra falsos positivos. Um veredito VULNERABLE exige tanto que o bypass de autenticação tenha alcançado o manipulador vulnerável quanto que uma requisição de base (mesmo endpoint, sem bypass) tenha sido corretamente rejeitada com 401.

Como funciona

O UniFi OS coloca o nginx na frente de seus serviços, que impõe autenticação por meio de uma subrequisição. Essa verificação de autenticação trata qualquer requisição cuja URI crua comece com /api/auth/validate-sso/ como pública, mas o nginx roteia para o backend usando a URI normalizada (ele decodifica percentuais %2f→/ e colapsa ../). Uma requisição como:

root@kitploit:~
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package

é portanto tratada como pública (prefixo cru) mas roteada para o endpoint interno autenticado de atualização de pacotes (caminho normalizado). Sem pkg_name, esse endpoint responde query param pkg_name required — provando que o bypass funciona e o manipulador vulnerável está acessível.

O detector também envia uma requisição de base para o mesmo endpoint sem o bypass e exige que ela retorne 401 antes de declarar um host como vulnerável. A verificação testa o comportamento vulnerável diretamente — um veredito VULNERABLE significa que o bypass realmente alcançou o sink.

Confirmando que o alvo é UniFi OS antes de qualquer veredito não vulnerável

Sempre que a sonda não confirma positivamente VULNERABLE ou PATCHED, o detector busca a página raiz e procura pela impressão digital do portal de gerenciamento do UniFi OS (<title>UniFi OS</title>, window.UNIFI_OS_MANIFEST,id="portal-root", id="site-manager_portal-container"). Isso se aplica também a um 401: um host UniFi OS que impõe autenticação no bypass é INCONCLUSIVE, mas um proxy não-UniFi que simplesmente retorna 401 para tudo não carrega impressão digital e é reportado como UNAFFECTED. Portanto, todo resultado "não vulnerável" é fundamentado na impressão digital: marcadores presentes → INCONCLUSIVE; marcadores ausentes → UNAFFECTED (o CVE não se aplica).

Requisitos

  • Python 3.7+, apenas biblioteca padrão — sem pacotes de terceiros.

Uso

root@kitploit:~
# single host (default port 11443)
./cve_2026_34908_check.py 192.168.1.10

# explicit port / URL forms
./cve_2026_34908_check.py host-a:11443 https://host-b

# scan a list, one target per line ('#' comments allowed), compact output
./cve_2026_34908_check.py -f targets.txt --brief

# machine-readable output for pipelines
./cve_2026_34908_check.py -f targets.txt --json > results.json

Opções

Exemplos

Um console vulnerável (verboso, o padrão). A segunda linha é o detalhe do veredito; o marcador [!] e VULNERABLE são renderizados em vermelho em um TTY:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10
[!] 192.168.1.10:11443: VULNERABLE
      auth bypass reached the vulnerable handler (no command executed); baseline correctly 401

Um console corrigido (5.0.8+):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.11
[+] 192.168.1.11:11443: PATCHED
      nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior

Um host UniFi OS confirmado que a sonda não pôde classificar → INCONCLUSIVE. A linha de detalhe distingue os dois casos (autenticação imposta vs. resposta inesperada):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.12 192.168.1.13
[?] 192.168.1.12:11443: INCONCLUSIVE
      bypass blocked / auth enforced (HTTP 401) on a confirmed UniFi OS host — not confirmed vulnerable
[?] 192.168.1.13:11443: INCONCLUSIVE
      UniFi OS detected, but probe returned an unexpected response: HTTP 302 text/html

Um host que não é UniFi OS → UNAFFECTED (o aviso não se aplica):

root@kitploit:~
$ ./cve_2026_34908_check.py 203.0.113.9:443
[-] 203.0.113.9:443: UNAFFECTED
      no UniFi OS web fingerprint on / (probe HTTP 404) — target is not a UniFi OS Server

Escaneie uma lista, uma linha alinhada por host (--brief). O código de saída é 1 se algum host for VULNERABLE, caso contrário 0 — útil em scripts:

root@kitploit:~
$ ./cve_2026_34908_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE    192.168.1.10:11443
PATCHED       192.168.1.11:11443
INCONCLUSIVE  192.168.1.12:11443
UNAFFECTED    203.0.113.9:443
ERROR         10.0.0.1:11443  timeout
exit: 1

Saída legível por máquina para pipelines (--json). Cada resultado carrega o verdict mais o bypass.state/bypass.detail por trás dele; resultados ERROR carregam um campo error em vez de bypass:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10 192.168.1.11 10.0.0.1 --json
[
  {
    "target": "192.168.1.10:11443",
    "bypass": {
      "state": "vulnerable",
      "detail": "auth bypass reached the vulnerable handler (no command executed); baseline correctly 401"
    },
    "verdict": "VULNERABLE"
  },
  {
    "target": "192.168.1.11:11443",
    "bypass": {
      "state": "patched",
      "detail": "nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior"
    },
    "verdict": "PATCHED"
  },
  {
    "target": "10.0.0.1:11443",
    "verdict": "ERROR",
    "error": "timeout"
  }
]

Verdetos

Códigos de saída

CódigoSignificado
0Nenhum alvo retornou VULNERABLE
1Pelo menos um alvo está VULNERABLE
2Erro de uso (argumentos inválidos / arquivo de alvos ilegível)

Limitações

  • INCONCLUSIVE não é uma garantia de segurança — confirma um host UniFi OS mas não pôde classificá-lo (autenticação imposta no bypass, ou uma resposta inesperada). Um host que é fortemente filtrado ou protegido por um proxy inesperado pode não ser classificável apenas pela rede. Confirme a versão em execução quando possível.
  • UNAFFECTED significa que a página raiz não carregou impressão digital do portal UniFi OS (incluindo hosts que retornam 401 sem ela). Um console UniFi OS escondido atrás de um proxy reverso que remove ou reescreve o HTML do portal poderia, portanto, ser reportado incorretamente; confirme diretamente se espera-se que o alvo seja UniFi OS.
  • O detector reporta a acessibilidade do comportamento vulnerável.

Remediação

Atualize o UniFi OS Server para a versão 5.0.8 ou posterior. A correção adiciona uma comparação de URI crua versus normalizada no nginx (fechando o bypass de autenticação) e validação de entrada no caminho de atualização de pacotes (fechando a injeção de comando).

Licença

Este código é distribuído sob uma licença MIT.

Aviso legal

O uso desta ferramenta para atacar alvos sem consentimento mútuo prévio é ilegal. É responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa.

Veja também

  • Ubiquiti Security Advisory Bulletin 064
  • Bishop Fox Blog: Full Technical Analysis
Baixar ferramenta
Resposta da sondaVeredito
200 + marcadores de erro do manipuladorVULNERABLE
400 (nginx rejeita a divergência)PATCHED (5.0.8+)
401, impressão digital do UniFi OS presenteINCONCLUSIVE (autenticação imposta / bypass bloqueado)
401, sem impressão digital do UniFi OSUNAFFECTED (não é um Servidor UniFi OS)
qualquer outra coisa, sem impressão digital do UniFi OSUNAFFECTED (não é um Servidor UniFi OS)
qualquer outra coisa, impressão digital do UniFi OS presenteINCONCLUSIVE (resposta inesperada)
BandeiraDescrição
targetsUm ou mais host, host:port, ou https://host:port
-f, --targets-file FILELê alvos de um arquivo (um por linha; comentários #)
--briefUma única linha alinhada por alvo — ideal para escanear muitos hosts
--jsonEmite resultados JSON estruturados
--timeout SECSTimeout por requisição (padrão: 10)
--no-colorDesativa saída colorida (também respeita NO_COLOR e não-TTY)
VereditoSignificado
VULNERABLEBypass de autenticação alcançou o manipulador vulnerável de forma não autenticada. Atualize para 5.0.8+.
PATCHEDnginx rejeitou a divergência de caminho normalizado (comportamento da 5.0.8+).
UNAFFECTEDNenhuma impressão digital do portal UniFi OS na página raiz — o alvo não é um Servidor UniFi OS, portanto o aviso não se aplica. Inclui hosts que retornam 401 sem a impressão digital (por exemplo, um proxy não relacionado que rejeita tudo).
INCONCLUSIVEHost UniFi OS confirmado que não pôde ser classificado — verifique a versão manualmente. A linha de detalhe do veredito indica qual caso: (a) o bypass foi bloqueado / autenticação imposta (401), ou (b) a sonda retornou uma resposta inesperada.
ERRORFalha de conexão/timeout/TLS.