Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-17147_Practice_Material — Questo repository contiene partizioni flash estratte con versione del firmware vulnerabile a CVE-2019-17147 e alcuni binari utili per eseguire il downgrade e il debug del tuo router WR841N. | Kitploit
Strumenti/GitHubGitHub/drmnsamoliu/cve-2019-17147_practice_material
Sicurezza Sistemi EmbeddedAnalisi delle VulnerabilitàExploitDebuggerHacking HardwareAnalisi di BinariApprendimento e FormazioneAnalisi del FirmwareLab e Pratica

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHubdrmnsamoliu/cve-2019-17147_practice_material

CVE-2019-17147_Practice_Material

Questo repository contiene partizioni flash estratte con versione del firmware vulnerabile a CVE-2019-17147 e alcuni binari utili per eseguire il downgrade e il debug del tuo router WR841N.

Vedi Repository
41164 anni faNon ancora revisionato

CVE-2019-17147_Practice_Material

Questa repo contiene partizioni flash estratte con versione del firmware vulnerabile a CVE-2019-17147 e alcuni binari utili per fare il downgrade e il debug del tuo router WR841N(V14).

Effettuare modifiche hardware come sovrascrivere le partizioni del chip flash comporta dei rischi. Valuta i rischi e decidi tu stesso se vuoi farlo o meno.

Perché?

Il post di ZDI: https://www.zerodayinitiative.com/blog/2019/12/2/mindshare-hardware-reversing-with-the-tp-link-tl-wr841n-router-part-2 ha dimostrato una vulnerabilità molto interessante che volevo davvero provare e da cui imparare qualcosa.
Purtroppo la versione del firmware (US) 0.9.1 4.16 v007c.0 Build 180613 Rel.42415n è già stata rimossa dal sito statunitense e non può più essere scaricata.
Tuttavia ho alcuni WR841N che eseguono la versione del firmware (TW) 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n, più vecchia di quella sfruttata da ZDI e in cui la stessa vulnerabilità esiste ancora.

Immagino che molte altre persone sarebbero interessate a riprodurre questo exploit ma si trovano ad affrontare lo stesso problema: non riescono a trovare un WR841N funzionante che esegua una versione vulnerabile del firmware.
Se stai usando hardware della versione TW, EU o JP, è ancora possibile scaricare una versione del firmware precedente alla 180613 (cioè costruita il 2018/06/13) e fare il downgrade del router semplicemente "aggiornandolo" con il vecchio firmware dal sito ufficiale.

Sebbene il downgrade del firmware sia possibile, il WR841N in realtà controlla e non accetta firmware destinato a hardware venduto in paesi diversi. Quindi per chi vive in paesi in cui TP-Link non fornisce la versione vulnerabile del firmware sul proprio sito (ad esempio, gli Stati Uniti), sarà necessario bypassare il controllo nel server http e scrivere il firmware vulnerabile direttamente nel chip flash del proprio dispositivo. È principalmente a questo che serve questa repo.

Ho anche compilato in cross-compilation busybox e gdbserver statici che funzionano sul WR841N per chiunque voglia provare a fare debug e ricreare l'exploit.

Esegui il backup delle partizioni flash

Prima di tentare di sovrascrivere le partizioni flash, dovresti eseguire il backup di quelle correnti, così da poter ripristinare il router dopo aver finito di giocare con questa versione vulnerabile.

Presumo che tu abbia già familiarità con l'uso della console seriale, quindi salterò la parte hardware.

  1. Configura un server tftp sulla macchina che preferisci.

  2. Nella console del WR841N:
    (Sostituisci l'indirizzo IP con quello del tuo server 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=
  1. Controlla i file .bin con binwalk per assicurarti di aver eseguito correttamente il backup delle partizioni flash.


Come sovrascrivere la partizione flash con quella vulnerabile

Le partizioni flash del WR841N sono le seguenti:

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 partizione principale da sovrascrivere è rootfs (mtd2), ma per motivi di stabilità sovrascriveremo anche boot e kernel.
Non ho fornito le partizioni config e radio perché non influenzano la vulnerabilità e sicuramente non vuoi toccare le impostazioni RF per evitare potenziali problemi legali.


  1. Trasferisci flashcp nel WR841N con tftp.

Nella shell del WR841:

/var # tftp -g -r flashcp 192.168.0.100
/var # chmod +x flashcp

(Ovviamente, sostituisci l'indirizzo IP con quello della tua macchina che esegue il server tftp.)


  1. Trasferisci TW_wr841N_mtd0_boot_180516.bin nel WR841N e sovrascrivi con 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

Nota: l'ordine in cui trasferisci e sovrascrivi le partizioni non ha importanza, ma assicurati di farlo **UNA ALLA VOLTA** e di non trasferire tutti i file .bin al WR841N contemporaneamente.
Rimuovi il .bin che hai già flashato prima di trasferire il successivo. Il router ha memoria molto limitata e andrà in crash se trasferisci troppa roba nella sua ramfs!

  1. Trasferisci TW_wr841N_mtd1_kernel_180516.bin nel WR841N e sovrascrivi con 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

  1. Trasferisci TW_wr841N_mtd2_rootfs_180516.bin nel WR841N e sovrascrivi con flashcp (Questa è la partizione più grande, quindi flashcp impiegherà un po' di tempo per finire):
/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. Riavvia il router e dovresti vedere la pagina di gestione web diventare interamente in cinese tradizionale, con versione del firmware 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n.



FW

Note

  1. Il PoC fornito da ZDI non funzionerà immediatamente con la versione del firmware qui fornita: gli offset di memoria sono diversi. Dovresti provare a modificare il PoC di ZDI o creare il tuo exploit :)

  2. Tutti i binari sono compilati in cross-compilation da me con buildroot-2021.02.6.

  3. La lingua del firmware non dovrebbe influire molto, dato che la maggior parte del lavoro di debug e sviluppo dell'exploit avviene nella console. Tuttavia, posso provare a creare partizioni flashabili dalla versione vulnerabile EU o JP se qualcuno ne ha davvero bisogno e lo richiede.

  4. Inutile dirlo, effettuare modifiche hardware come sovrascrivere le partizioni del chip flash comporta dei rischi. Valuta i rischi e decidi tu stesso se vuoi farlo o meno.
Scarica lo strumento