
Exploit de preuve de concept pour UniFi OS CVE-2026-34910, contournement d'authentification permettant une injection de commandes/RCE, et CVE-2026-34909, traversée de chemin pour la lecture arbitraire de fichiers.
Preuve de concept pour les tests autorisés de deux vecteurs identifiés comme :
CVE-2026-34910 : contournement d'authentification pouvant mener à une injection de commandes et à une exécution de code à distance via le gestionnaire de mise à jour de paquets.CVE-2026-34909 : traversée de chemin pouvant mener à une lecture arbitraire de fichiers via l'alias app-assets.Ce script est destiné à la validation de sécurité sur des appareils et des réseaux qui vous appartiennent ou pour lesquels vous êtes explicitement autorisé à effectuer des tests. Ne l'utilisez pas contre les systèmes de tiers.
1.0.0Les valeurs CVSS et le statut des vulnérabilités doivent être vérifiés auprès des avis du fournisseur et des versions de firmware concernées avant d'être utilisés dans un rapport.
Ce script peut envoyer des commandes à la cible et lire le contenu de fichiers sur la cible. L'impact peut inclure des modifications du système, la divulgation d'informations sensibles, des interruptions de service ou des dommages aux données.
Avant d'exécuter les tests :
Le script utilise uniquement la bibliothèque standard de Python, aucune étape d'installation de paquets supplémentaires n'est donc nécessaire.
Clonez le dépôt ou copiez le script sur la machine de test, puis accédez au répertoire du projet :
git clone <URL-REPOSITORI>
cd CVE-2026-34910
Aucun pip install n'est nécessaire. Assurez-vous que l'interpréteur utilisé est approprié :
python3 --version
Format général :
python3 CVE-2026-34910.py <target> [command] [options]
target doit être une URL avec le schéma http:// ou https://, par exemple https://192.0.2.10:11443.
Exécute la sonde sans envoyer de commande supplémentaire :
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check
Le deuxième argument positionnel est traité comme une commande envoyée à la cible. N'utilisez que des commandes non destructives préalablement approuvées :
python3 CVE-2026-34910.py https://192.0.2.10:11443 "id"
L'option --proof demande à la cible de créer un fichier de preuve dans /tmp/PWNED_34910 :
python3 CVE-2026-34910.py https://192.0.2.10:11443 --proof
Vérifiez et supprimez le fichier de preuve via les procédures d'accès approuvées. Ne considérez pas la réponse HTTP 200 comme la seule preuve que la commande a réussi.
python3 CVE-2026-34910.py https://192.0.2.10:11443 --read /etc/hostname
Le script affiche au maximum 800 caractères de la réponse du fichier.
Ajoutez --verbose ou -v pour afficher les détails des requêtes et des réponses :
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check --verbose
Notez que la sortie verbeuse peut contenir des URL, des paramètres ou des données de réponse sensibles.
| Option | Description |
|---|---|
target | URL cible avec le schéma HTTP ou HTTPS |
command | Commande testée via le vecteur CVE-2026-34910 |
--check | Exécute uniquement la sonde de contournement d'authentification |
--proof | Demande la création d'un fichier de preuve sur la cible |
--read PATH | Teste la lecture de fichier via la traversée de chemin |
-v, --verbose | Affiche des informations de débogage supplémentaires |
-h, --help | Affiche l'aide d'utilisation |
Utilisez un seul mode d'opération par exécution. Le programme retourne le code de sortie 0 si l'opération est considérée comme réussie, 1 si la cible ne semble pas vulnérable ou si les arguments sont incomplets, et 2 en cas d'erreur inattendue. Une interruption utilisateur retourne 130.
--check recherche dans la réponse un marqueur indiquant que le gestionnaire a été atteint.pkg_name et l'envoie au point de terminaison de mise à jour des paquets.--read construit une traversée de chemin vers l'alias app-assets et affiche la réponse de manière limitée.L'implémentation se trouve entièrement dans CVE-2026-34910.py.
200 en mode RCE indique que la requête a été reçue par le gestionnaire, mais ne garantit pas que la commande s'est exécutée comme prévu.Pour les appareils situés dans le périmètre des tests :
Le rapport de test devrait mentionner :
Pour un signalement responsable de vulnérabilités, utilisez les canaux de sécurité officiels du fournisseur et coordonnez la divulgation conformément aux politiques en vigueur.
Aucune licence n'a été définie pour ce projet. Ajoutez un fichier de licence avant de distribuer ou d'utiliser ce code dans d'autres projets.
Gagaltotal666 - GhostGTR666
Dépôt associé : github.com/gagaltotal