
Этот репозиторий содержит дампированные разделы флеш-памяти с версией прошивки, уязвимой к CVE-2019-17147, а также некоторые полезные бинарные файлы для понижения версии и отладки вашего маршрутизатора WR841N.
Этот репозиторий содержит дампы разделов флеш-памяти с версией прошивки, уязвимой к CVE-2019-17147, а также несколько полезных бинарных файлов для понижения версии и отладки вашего роутера WR841N(V14).
Аппаратные модификации, такие как перезапись разделов микросхемы флеш-памяти, сопряжены с рисками. Оцените риски и решите сами, хотите ли вы это делать или нет.
Пост от ZDI: https://www.zerodayinitiative.com/blog/2019/12/2/mindshare-hardware-reversing-with-the-tp-link-tl-wr841n-router-part-2 продемонстрировал очень интересную уязвимость, которую мне очень хотелось бы попробовать и чему-то научиться.
К сожалению, версия прошивки (US) 0.9.1 4.16 v007c.0 Build 180613 Rel.42415n уже удалена с американского сайта и больше не доступна для скачивания.
Однако у меня есть несколько WR841N, работающих на версии прошивки (TW) 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n, которая старше той, что использовал ZDI, и та же уязвимость всё ещё существует.
Думаю, многие другие люди были бы заинтересованы в воспроизведении этого эксплойта, но сталкиваются с той же проблемой: они не могут найти работающий WR841N с уязвимой версией прошивки.
Если вы используете оборудование версии TW, EU или JP, всё ещё можно скачать версию прошивки старше 180613 (то есть выпущенную до 2018/06/13) и понизить версию вашего роутера, просто «обновив» его старой прошивкой с официального сайта.
Хотя понижение версии прошивки возможно, WR841N проверяет и не принимает прошивку, предназначенную для оборудования, проданного в других странах. Поэтому для тех, кто живёт в странах, где TP-Link не предоставляет уязвимую версию прошивки на своём сайте (например, США), потребуется обойти проверку в HTTP-сервере и записать уязвимую прошивку непосредственно в микросхему флеш-памяти своего устройства. В основном для этого и предназначен этот репозиторий.
Я также скомпилировал статические busybox и gdbserver, которые работают на WR841N, для всех, кто хочет попробовать отладить и воссоздать эксплойт.
Прежде чем пытаться перезаписать разделы флеш-памяти, следует сделать резервные копии текущих, чтобы иметь возможность восстановить роутер после экспериментов с этой уязвимой версией.
Я предполагаю, что вы уже знакомы с использованием последовательной консоли, поэтому пропущу аппаратную часть.
Настройте tftp-сервер на выбранной вами машине.
В консоли WR841N:
(Замените IP-адрес на адрес вашего 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=
Разделы флеш-памяти в WR841N следующие:
dev: size erasesize name
mtd0: 00010000 00010000 "boot"
mtd1: 000f0000 00010000 "kernel"
mtd2: 002e0000 00010000 "rootfs"
mtd3: 00010000 00010000 "config"
mtd4: 00010000 00010000 "radio"
Основной раздел, который нужно перезаписать, это rootfs (mtd2), но для стабильности мы также перезапишем boot и kernel.
Я не предоставил разделы config и radio, потому что они не влияют на уязвимость, и вам определённо не стоит вмешиваться в настройки RF, чтобы избежать потенциальных юридических проблем.
flashcp в WR841N через tftp.В оболочке WR841:
~ # cd /var
/var # tftp -g -r flashcp 192.168.0.100
/var # chmod +x flashcp
(Разумеется, замените IP-адрес на адрес вашей машины, на которой работает tftp-сервер.)
TW_wr841N_mtd0_boot_180516.bin в WR841N и перезапишите с помощью 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 в WR841N и перезапишите с помощью 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 в WR841N и перезапишите с помощью flashcp (это самый большой раздел, так что flashcp потребуется некоторое время для завершения):/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.