
Preuve de concept en Python pour une injection de commande authentifiée dans les points d'accès sans fil Hikvision, permettant de tester l'exécution de code à distance avec des points de terminaison et des commandes personnalisables.
Cet outil est une preuve de concept en Python pour tester les points d'accès sans fil Hikvision pour la CVE-2026-0709, une vulnérabilité d'injection de commande authentifiée pouvant conduire à une exécution de code à distance sur les appareils concernés.
Pour les tests de sécurité et la recherche uniquement sur les systèmes que vous possédez ou pour lesquels vous êtes explicitement autorisé à évaluer.
La CVE-2026-0709 est une vulnérabilité authentifiée : l'attaquant doit se connecter avec des identifiants valides, puis envoyer une requête spécialement conçue à un point de terminaison vulnérable sur le point d'accès sans fil Hikvision. Si l'appareil est vulnérable, une entrée non assainie est transmise au système d'exploitation sous-jacent, permettant l'exécution arbitraire de commandes sous le compte de service de l'appareil.
Ce script :
Le script est conçu comme un modèle : vous devez renseigner le chemin réel du point de terminaison, le nom du paramètre et la logique de connexion conformément à l'avis officiel du fournisseur ou à une preuve de concept publique.
requestsInstaller les dépendances :
pip install requests
Supposons que le script est enregistré sous le nom hikvision_cve_2026_0709.py.
python hikvision_cve_2026_0709.py \
--host 192.168.1.50 \
--port 80 \
--user admin \
--password MyStrongPassword \
--cmd "id"
python hikvision_cve_2026_0709.py \
--host ap.example.local \
--port 443 \
--https \
--user admin \
--password MyStrongPassword \
--cmd "uname -a"
--host (obligatoire) : Adresse IP ou nom d'hôte du point d'accès cible.
--port (facultatif) : Port cible (par défaut : 80).
--https (indicateur) : Utiliser HTTPS au lieu de HTTP.
-u, --user (obligatoire) : Nom d'utilisateur pour la connexion.
-p, --password (obligatoire) : Mot de passe pour la connexion.
--cmd (facultatif) : Commande à exécuter sur l'appareil (par défaut : id).
Le script va :
Construire l'URL de base à partir de l'hôte, du port et du schéma (HTTP/HTTPS).
S'authentifier avec les identifiants fournis.
Envoyer une charge utile où un paramètre contient une séquence de shell injectée (par exemple 127.0.0.1; id;).
Afficher le code de statut HTTP et le corps de la réponse.
Ce dépôt ne code en dur aucun point de terminaison ou paramètre spécifique à Hikvision. Vous devez mettre à jour le script pour correspondre aux détails réels de la CVE-2026-0709 :
Fonction d'authentification
Dans authenticate(...), remplacez la logique de connexion factice par la vraie :
Si l'appareil utilise une connexion basée sur un formulaire, ajustez l'URL et les champs du formulaire (par exemple /login, user, pwd).
S'il utilise l'authentification HTTP de base, vous n'avez peut-être pas besoin d'une requête de connexion séparée ; configurez plutôt la session pour utiliser l'authentification de base.
Point de terminaison vulnérable
Dans exploit_command_injection(...), définissez :
vuln_path sur le chemin réel (par exemple, un point de terminaison API ou de diagnostic).
La clé du paramètre (par exemple host, address, command) sur celle qui est vulnérable.
La méthode HTTP exacte (GET ou POST) et le corps/en-têtes comme décrit dans l'avis.
Sortie de commande
Selon le comportement de l'appareil :
La réponse peut contenir directement la sortie de la commande.
Ou elle peut afficher uniquement un statut générique, et vous devez déduire le succès par des effets secondaires (par exemple, nouveau fichier, rappel réseau).
Ajustez votre logique d'analyse en conséquence si vous souhaitez détecter automatiquement le succès.
Lisez l'avis officiel du fournisseur / la documentation technique pour la CVE-2026-0709.
Identifiez :
L'URL du point de terminaison (chemin).
Le paramètre vulnérable.
La méthode d'authentification requise.
Modifiez le script :
Mettez à jour authenticate() avec le chemin et les champs de connexion corrects.
Mettez à jour exploit_command_injection() avec le chemin et le nom du paramètre corrects.
Exécutez le script en laboratoire contre un appareil de test.
Vérifiez la réponse pour des preuves d'exécution de commande (par exemple, la sortie de id ou uname -a).
Cette preuve de concept est fournie à des fins éducatives, de recherche et de sécurité défensive. Il ne s'agit pas d'un exploit ou d'un scanner de qualité production. Vous devez examiner et tester minutieusement le code, et toujours suivre les politiques de sécurité et les exigences légales de votre organisation.