
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.
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.
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.
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.
Configurez un serveur tftp sur la machine de votre choix.
Dans la console WR841N :
(Remplacez l'adresse IP par celle de votre serveur tftp)
~ # 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=
Les partitions flash du WR841N sont les suivantes :
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.
flashcp dans le WR841N avec tftp.Dans le shell WR841N :
~ # 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.)
TW_wr841N_mtd0_boot_180516.bin dans le WR841N et écrasez avec flashcp :/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
TW_wr841N_mtd1_kernel_180516.bin dans le WR841N et écrasez avec flashcp :/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
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) :/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
0.9.1 4.16 v009e.0 Build 180516 Rel.81030n.
buildroot-2021.02.6.