Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
tiandy-research — Ce dépôt contient les résultats de mes recherches d'août 2020 sur le firmware des IPC/NVR de Tiandy. J'ai trouvé deux vulnérabilités qui pourraient être utilisées pour récupérer à distance le mot de passe administrateur et obtenir un accès root à l'appareil. | Kitploit
Outils/GitHubGitHub/zb3/tiandy-research
Sécurité des Systèmes EmbarquésCassage de Mots de PasseEscalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionAuthentificationArticles et RechercheRed TeamingAnalyse de Micrologiciel
GitHub
30227il y a 6 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
zb3/tiandy-research

tiandy-research

Ce dépôt contient les résultats de mes recherches d'août 2020 sur le firmware des IPC/NVR de Tiandy. J'ai trouvé deux vulnérabilités qui pourraient être utilisées pour récupérer à distance le mot de passe administrateur et obtenir un accès root à l'appareil.

Voir le dépôt

tiandy-research

Ce dépôt contient les résultats de mes recherches d'août 2020 sur le firmware des IPC/NVR de Tiandy (ces appareils sont également vendus sous le nom OMNY). Ces « recherches » n'étaient pas exhaustives, mais j'ai trouvé plusieurs méthodes pour récupérer le mot de passe administrateur à distance, activer telnet et changer le mot de passe root.

Il est difficile de dire exactement quelles versions sont concernées, car nous ne pouvons télécharger que les plus récentes. Toutes ces versions téléchargeables sont concernées :

DVRS_V9.12.7.20200422
DVRS_V11.7.4.20200721
NVSS_V13.6.1.20200723
NVSS_V22.1.0.20200722

Non seulement il existe différentes branches pour différents appareils, mais certains composants sont versionnés et mis à niveau séparément, comme l'API web, où j'ai trouvé un contournement de l'authentification qui ne fonctionne que pour les versions publiées depuis mi-2019, quel que soit le numéro de version du firmware. Si vous en savez plus sur les versions concernées, votre aide serait appréciée.

Je fais ici une divulgation complète, mais c'est raisonnable. Un correctif du fournisseur (peu probable puisqu'ils ne répondent pas) ne ferait pas disparaître le problème, surtout quand aucun appareil en ligne n'a le dernier firmware (et de loin). La véritable vulnérabilité est que ces appareils sont exposés à Internet. Et c'est quelque chose que les utilisateurs finaux doivent corriger, pas Tiandy.

En bonus, j'inclus également l'outil de dépaquetage du firmware et quelques informations sur la façon d'accéder aux flux via RTSP/RTMP (bonne chance pour trouver cela dans le manuel).

Contenu

D'abord, je présente les scripts :

  • Récupération du mot de passe
  • Obtenir root

Ensuite, j'essaie d'expliquer brièvement ce que font ces scripts et pourquoi. Je ne répète pas le code, mais j'essaie de fournir assez de contexte pour que vous puissiez comprendre le code :

  • Vue d'ensemble
  • Les vulnérabilités
  • Au-delà de la récupération du mot de passe

Enfin, cela devient relativement technique :

  • Dépaqueter le firmware
  • Trouver des appareils Tiandy sur Internet
  • Bonus : URLs RTSP et RTMP

Récupération du mot de passe

Vous aurez besoin de Python 3 avec PyCrypto.

D'abord, essayez recover.py. Cela nécessite que le port 3001 soit accessible :

python3 recover.py [HOST]

si tout se passe bien, les identifiants administrateur devraient s'afficher.

Si ce port n'est pas accessible, la méthode web pourrait fonctionner. Cela nécessite l'URL :

python3 cgi_recover.py http://123.45.67.89
python3 cgi_recover.py https://123.45.67.89

Si rien de tout cela ne fonctionne, vérifiez si telnet est activé. Si c'est le cas, vous pouvez obtenir directement un accès root à l'appareil, il suffit de casser ce hash :

support:$1$$AErA9BQgLjrxTJB1748k71:501:501:Linux User,,,:/home/support:/bin/sh

(assurez-vous d'ouvrir une PR si vous arrivez à le casser :D)

Obtenir root

Ancien firmware

Dans les anciens firmwares NVR V7, vous pouvez exécuter des commandes directement :

python3 ftpupdate.py [host] [adminpass] '[cmd]'

mais cela ne produit aucune sortie. Pour faciliter cela, j'ai inclus ce raccourci :

python3 ftpupdate.py [host] [adminpass] adduser [username] [password]

Cela ajoutera un autre utilisateur avec l'uid 0.

Firmware plus récent

D'abord, activez telnet en utilisant :

python3 telnet.py [host] [adminpw]

ou pour les appareils récents :

python3 cgi_recover.py [host] telnet

Ensuite, vous pouvez écraser /etc/passwd (je suppose que vous savez comment cela fonctionne). Essayez d'abord filetransport.py (pour les NVR) :

python3 filetransport.py [host] [adminpass] put /etc/passwd <[source_file]

cela ne donne aucun retour, vous devez tester en essayant de vous connecter...

Pour les modèles IPC où filetransport.py ne fonctionne pas, essayez upgrade_rw.py :

python3 upgrade_rw.py [url] [adminpass] /etc/passwd <[source_file]

(cela ne donne aucun retour non plus)

Enfin, pour les appareils encore plus récents, cela peut aussi être fait via l'API web :

python3 cgi_recover.py [url] write /etc/passwd <[source_file]

Si aucune de ces méthodes n'a fonctionné (vérifiez si vous pouvez vous connecter), réessayez toutes ces méthodes mais écrasez /config/etc/passwd à la place. Dans certaines versions du firmware, /etc/passwd est un lien symbolique vers ce fichier. Enfin, vous pouvez aussi essayer d'écraser /tdfs/etc/passwd, mais après cela, un redémarrage de l'appareil pourrait être nécessaire ; pour redémarrer, utilisez :

python3 reboot.py [host] [adminpass]

Vue d'ensemble

Les anciens firmwares V7 (IPC et NVR) ne semblent pas être concernés, mais si vous avez le mot de passe administrateur, pour les NVR il y a une RCE authentifiée (ftpupdate.py), et pour les IPC, le script upgrade-rw.py peut être utilisé pour écraser /etc/passwd.

Les versions ultérieures du firmware NVR (V9 et V11) comportent un compte par défaut qui, combiné à une élévation de privilèges « passive », permet de récupérer le mot de passe administrateur. Nous pouvons ensuite écraser /etc/passwd avec filetransport.py.

Bien que le compte par défaut ne soit pas présent dans le firmware IPC, une autre méthode de récupération apparaît : la méthode PSW. C'est un mécanisme de récupération de mot de passe sans aucune sécurité. Il est présent dans toutes les versions téléchargeables du firmware depuis V9. Alors que filetransport.py ne fonctionne que sur les NVR, upgrade_rw.py atteint le même objectif sur les IPC en utilisant le mécanisme de mise à niveau, nous pouvons donc toujours obtenir l'accès root.

Le firmware de 2019 introduit un autre vecteur d'attaque : un contournement de l'authentification via l'API web. En exportant le fichier de configuration sans authentification, nous pouvons récupérer le mot de passe et préparer un paquet de mise à niveau pour écraser des fichiers arbitraires.

En parlant de vulnérabilités, il y en a 4 :

  • Identifiants telnet codés en dur (ancien firmware NVR)
  • Élévation de privilèges authentifiée (n'importe quel utilisateur peut lire le mot de passe administrateur)
  • Récupération de mot de passe non sécurisée (clé de chiffrement symétrique intégrée dans le binaire)
  • Contournement de l'authentification de l'API web (l'ajout de certaines chaînes au chemin de l'URL désactive l'authentification)

Notez que je n'ai pas étudié les fonctions « cloud », c'est-à-dire s'il est possible d'énumérer les appareils et donc de se connecter à des appareils non exposés à Internet (comme c'est le cas avec les appareils Xiongmai).

Les vulnérabilités

Identifiants telnet codés en dur pour l'ancien firmware

Dans les anciennes versions, telnet est activé par défaut et voici ce que l'on trouve dans le fichier /etc/passwd :

support:$1$$AErA9BQgLjrxTJB1748k71:501:501:Linux User,,,:/home/support:/bin/sh

(le mot de passe root est mis à jour dynamiquement ; je n'ai pas non plus cassé ce hash, donc les pull requests sont plus que bienvenues :D)

L'utilisateur support (présent en réalité dans toutes les versions du firmware) peut sembler non privilégié, mais bien sûr, cet utilisateur a suffisamment de privilèges pour lire le mot de passe Admin et écraser les scripts d'initialisation inscriptibles par tous dans /etc/init.d ou même en créer de nouveaux :)

Le compte par défaut + l'élévation de privilèges authentifiée

Télécharger l’outil