
Exploit de prova de conceito para UniFi OS: bypass de autenticação CVE-2026-34910 que permite injeção de comandos/RCE, e path traversal CVE-2026-34909 para leitura arbitrária de arquivos.
Prova de conceito para testes autorizados contra dois vetores identificados como:
CVE-2026-34910: bypass de autenticação que pode levar a injeção de comandos e execução remota de código por meio do handler de atualização de pacotes.CVE-2026-34909: path traversal que pode levar à leitura arbitrária de arquivos por meio do alias app-assets.Este script destina-se à validação de segurança em dispositivos e redes que você possui ou para os quais você tem autorização explícita para testar. Não o utilize contra sistemas de terceiros.
1.0.0Os valores de CVSS e o status das vulnerabilidades devem ser verificados junto aos advisories do fornecedor e às versões de firmware relevantes antes de serem usados em relatórios.
Este script pode enviar comandos ao alvo e ler o conteúdo de arquivos do alvo. Os impactos podem incluir alterações no sistema, divulgação de informações sensíveis, interrupção de serviços ou danos a dados.
Antes de executar os testes:
O script usa apenas a biblioteca padrão do Python, portanto não há etapas de instalação de pacotes adicionais.
Clone o repositório ou copie o script para a máquina de teste e, em seguida, entre no diretório do projeto:
git clone <URL-REPOSITORI>
cd CVE-2026-34910
Não é necessário pip install. Certifique-se de que o interpretador em uso seja adequado:
python3 --version
Formato geral:
python3 CVE-2026-34910.py <target> [command] [options]
target deve ser uma URL com esquema http:// ou https://, por exemplo, https://192.0.2.10:11443.
Executa o teste sem enviar comandos adicionais:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check
O segundo argumento posicional é tratado como um comando enviado ao alvo. Use apenas comandos não destrutivos previamente aprovados:
python3 CVE-2026-34910.py https://192.0.2.10:11443 "id"
A opção --proof solicita que o alvo crie um arquivo de prova em /tmp/PWNED_34910:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --proof
Verifique e remova o arquivo de prova por meio dos procedimentos de acesso aprovados. Não considere a resposta HTTP 200 como evidência única de que o comando foi bem-sucedido.
python3 CVE-2026-34910.py https://192.0.2.10:11443 --read /etc/hostname
O script imprime no máximo 800 caracteres da resposta do arquivo.
Adicione --verbose ou -v para ver detalhes da requisição e da resposta:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check --verbose
Observe que a saída verbose pode conter URLs, parâmetros ou dados de resposta sensíveis.
| Opção | Descrição |
|---|---|
target | URL do alvo com esquema HTTP ou HTTPS |
command | Comando testado por meio do vetor CVE-2026-34910 |
--check | Executa apenas o teste de bypass de autenticação |
--proof | Solicita a criação de um arquivo de prova no alvo |
--read PATH | Testa a leitura de arquivos por meio de path traversal |
-v, --verbose | Exibe informações de depuração adicionais |
-h, --help | Exibe a ajuda de uso |
Use apenas um modo de operação por execução. O programa retorna o código de saída 0 se a operação for considerada bem-sucedida, 1 se o alvo não apresentar indícios de vulnerabilidade ou se os argumentos estiverem incompletos, e 2 se ocorrer um erro inesperado. Interrupções do usuário retornam 130.
--check verifica a resposta em busca de um marcador que indique que o handler foi alcançado.pkg_name e o envia ao endpoint de atualização de pacotes.--read monta o path traversal em direção ao alias app-assets e exibe a resposta de forma limitada.A implementação está inteiramente em CVE-2026-34910.py.
200 no modo RCE indica que a requisição foi recebida pelo handler, não uma garantia de que o comando foi concluído conforme o esperado.Para dispositivos que estejam dentro do escopo dos testes:
O relatório de testes deve registrar:
Para divulgação responsável de vulnerabilidades, use os canais oficiais de segurança do fornecedor e coordene a divulgação de acordo com as políticas aplicáveis.
Nenhuma licença foi definida para este projeto. Adicione um arquivo de licença antes de distribuir ou usar este código em outros projetos.
Gagaltotal666 - GhostGTR666
Repositório relacionado: github.com/gagaltotal