Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
CVE-2019-17147_Practice_Material — Ce dépôt contient des partitions flash extraites avec une version de firmware vulnérable à la CVE-2019-17147, ainsi que quelques binaires utiles pour rétrograder et déboguer votre routeur WR841N. | Kitploit
Outils/GitHubGitHub/drmnsamoliu/cve-2019-17147_practice_material
Sécurité des Systèmes EmbarquésAnalyse des VulnérabilitésExploitationDébogueursHacking MatérielAnalyse de BinairesApprentissage et ÉducationAnalyse de MicrologicielLabs et Pratique

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
GitHubdrmnsamoliu/cve-2019-17147_practice_material

CVE-2019-17147_Practice_Material

Ce dépôt contient des partitions flash extraites avec une version de firmware vulnérable à la CVE-2019-17147, ainsi que quelques binaires utiles pour rétrograder et déboguer votre routeur WR841N.

Voir le dépôt
41il y a 4 ansPas encore vérifié

CVE-2019-17147_Practice_Material

Ce dépôt contient des partitions flash extraites avec une version de firmware vulnérable à la CVE-2019-17147, et quelques binaires utiles pour rétrograder et déboguer votre routeur WR841N(V14).

Effectuer des modifications matérielles telles que l'écrasement des partitions de la puce flash comporte des risques. Évaluez les risques et décidez par vous-même si vous souhaitez le faire ou non.

Pourquoi ?

L'article de ZDI : https://www.zerodayinitiative.com/blog/2019/12/2/mindshare-hardware-reversing-with-the-tp-link-tl-wr841n-router-part-2 a démontré une vulnérabilité très intéressante que j'aimerais vraiment essayer et dont j'aimerais apprendre quelque chose.
Malheureusement, la version du firmware (US) 0.9.1 4.16 v007c.0 Build 180613 Rel.42415n a déjà été retirée du site américain et ne peut plus être téléchargée.
Cependant, j'ai quelques WR841N qui exécutent la version du firmware (TW) 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n, qui est plus ancienne que celle exploitée par ZDI et la même vulnérabilité existe toujours.

Je suppose que beaucoup d'autres personnes seraient intéressées à reproduire cette exploitation mais sont confrontées au même problème : elles ne trouvent pas un WR841N fonctionnel qui exécute une version vulnérable du firmware.
Si vous utilisez du matériel de version TW, EU ou JP, il est toujours possible de télécharger une version du firmware antérieure à 180613 (c'est-à-dire construite le 13/06/2018) et de rétrograder votre routeur simplement en le « mettant à jour » avec un ancien firmware du site officiel.

Bien que la rétrogradation du firmware soit possible, le WR841N vérifie et n'accepte pas un firmware destiné au matériel vendu dans d'autres pays. Donc pour les personnes vivant dans des pays où TP-Link ne fournit pas de version vulnérable du firmware sur son site web (par exemple, les États-Unis), elles devront contourner la vérification dans le serveur HTTP et écrire le firmware vulnérable directement dans la puce flash de leur appareil. C'est principalement à cela que sert ce dépôt.

J'ai aussi cross-compilé des versions statiques de busybox et gdbserver qui fonctionnent sur WR841N pour quiconque souhaiterait essayer de déboguer et recréer l'exploitation.

Sauvegarder vos partitions flash

Avant d'essayer d'écraser vos partitions flash, vous devriez sauvegarder les partitions actuelles afin de pouvoir restaurer votre routeur après avoir joué avec cette version vulnérable.

Je suppose que vous êtes déjà familiarisé avec l'utilisation de la console série, donc je vais passer la partie matérielle.

  1. Configurez un serveur tftp sur la machine de votre choix.

  2. Dans la console WR841N :
    (Remplacez l'adresse IP par celle de votre serveur tftp)

root@kitploit:~
~ # cat /dev/mtd0 > /var/WR841N_backup_mtd0_boot.bin
~ # tftp -p -r /var/WR841N_backup_mtd0_boot.bin 192.168.0.100
~ # rm /var/WR841N_backup_mtd0_boot.bin
~ #
~ # cat /dev/mtd1 > /var/WR841N_backup_mtd1_kernel.bin
~ # tftp -p -r /var/WR841N_backup_mtd1_kernel.bin 192.168.0.100
~ # rm /var/WR841N_backup_mtd1_kernel.bin
~ #
~ # cat /dev/mtd2 > /var/WR841N_backup_mtd2_rootfs.bin
~ # tftp -p -r /var/WR841N_backup_mtd2_rootfs.bin 192.168.0.100
~ # rm /var/WR841N_backup_mtd2_rootfs.bin=
  1. Vérifiez les fichiers .bin avec binwalk pour vous assurer que vous avez bien sauvegardé vos partitions flash.


Comment écraser une partition flash avec des partitions vulnérables

Les partitions flash du WR841N sont les suivantes :

root@kitploit:~
dev:    size   erasesize  name
mtd0: 00010000 00010000 "boot"
mtd1: 000f0000 00010000 "kernel"
mtd2: 002e0000 00010000 "rootfs"
mtd3: 00010000 00010000 "config"
mtd4: 00010000 00010000 "radio"

La partition principale que vous devez écraser est rootfs (mtd2), mais par souci de stabilité, nous écraserons aussi boot et kernel.
Je n'ai pas fourni les partitions config et radio car elles n'affectent pas la vulnérabilité et vous ne voulez certainement pas modifier les paramètres RF pour éviter d'éventuels problèmes juridiques.


  1. Transférez flashcp dans le WR841N avec tftp.

Dans le shell WR841N :

root@kitploit:~
~ # cd /var
/var # tftp -g -r flashcp 192.168.0.100
/var # chmod +x flashcp

(Bien sûr, remplacez l'adresse IP par celle de votre machine qui exécute le serveur tftp.)


  1. Transférez TW_wr841N_mtd0_boot_180516.bin dans le WR841N et écrasez avec flashcp :
root@kitploit:~
/var # tftp -g -r TW_wr841N_mtd0_boot_180516.bin 192.168.0.100
/var # ./flashcp TW_wr841N_mtd0_boot_180516.bin /dev/mtd0
/var # rm TW_wr841N_mtd0_boot_180516.bin

Remarque : L'ordre dans lequel vous transférez et écrasez les partitions n'a pas d'importance, mais assurez-vous de les faire **UNE PAR UNE** et de ne pas transférer tous les fichiers .bin en même temps dans le WR841N.
Supprimez le .bin que vous avez déjà flashé avant d'en transférer un autre. Le routeur a une mémoire très limitée et plantera si vous transférez trop de choses dans sa ramfs !

  1. Transférez TW_wr841N_mtd1_kernel_180516.bin dans le WR841N et écrasez avec flashcp :
root@kitploit:~
/var # tftp -g -r TW_wr841N_mtd1_kernel_180516.bin 192.168.0.100
/var # ./flashcp TW_wr841N_mtd1_kernel_180516.bin /dev/mtd1
/var # rm TW_wr841N_mtd1_kernel_180516.bin

  1. Transférez TW_wr841N_mtd2_rootfs_180516.bin dans le WR841N et écrasez avec flashcp (Il s'agit de la plus grande partition, donc flashcp prendra un certain temps pour terminer) :
root@kitploit:~
/var # tftp -g -r TW_wr841N_mtd2_rootfs_180516.bin 192.168.0.100
/var # ./flashcp TW_wr841N_mtd2_rootfs_180516.bin /dev/mtd2
/var # rm TW_wr841N_mtd2_rootfs_180516.bin

  1. Redémarrez le routeur et vous devriez voir sa page d'administration web devenir entièrement en chinois traditionnel, et la version du firmware est 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n.



FW

Remarques

  1. Le PoC fourni par ZDI ne fonctionnera pas directement sur la version du firmware fournie ici, les décalages mémoire sont différents. Vous devriez essayer de modifier le PoC de ZDI ou créer votre propre exploit :)

  2. Tous les binaires sont cross-compilés par moi-même avec buildroot-2021.02.6.

  3. La langue du firmware ne devrait pas beaucoup affecter puisque la majeure partie du travail de débogage et de développement de l'exploit se fait dans la console. Cependant, je pourrais essayer de construire des partitions flashables à partir d'une version vulnérable EU ou JP si quelqu'un en a vraiment besoin et fait une demande.

  4. Inutile de dire qu'effectuer des modifications matérielles comme écraser les partitions de la puce flash comporte des risques. Évaluez les risques et décidez par vous-même si vous souhaitez le faire ou non.
Télécharger l’outil