Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-17147_Practice_Material — 这个仓库包含易受 CVE-2019-17147 影响的固件版本的闪存分区转储,以及一些可用于降级和调试你的 WR841N 路由器的实用二进制文件。 | Kitploit
工具/GitHubGitHub/drmnsamoliu/cve-2019-17147_practice_material
嵌入式系统安全漏洞分析漏洞利用调试器硬件黑客二进制分析学习与教育固件分析实验室与实践

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubdrmnsamoliu/cve-2019-17147_practice_material

CVE-2019-17147_Practice_Material

这个仓库包含易受 CVE-2019-17147 影响的固件版本的闪存分区转储,以及一些可用于降级和调试你的 WR841N 路由器的实用二进制文件。

查看仓库
4144年前尚未审核

CVE-2019-17147_Practice_Material

此仓库包含易受 CVE-2019-17147 影响的固件版本的 flash 分区转储文件,以及一些用于降级和调试你的 WR841N(V14) 路由器的实用二进制文件。

进行硬件修改(例如覆写 flash 芯片分区)存在风险。请自行评估风险并决定是否要这样做。

为什么?

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 已从美国官网撤下,无法再下载。
不过,我确实有一些运行固件版本 (TW) 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n 的 WR841N,该版本比 ZDI 所利用的版本更旧,且相同的漏洞仍然存在。

我想很多人会对复现这个漏洞利用感兴趣,但都面临同样的问题:找不到运行易受攻击固件版本且仍可正常工作的 WR841N。
如果你使用的是 TW、EU 或 JP 版本的硬件,仍然可以从官网下载早于 180613(即构建于 2018/06/13)的固件版本,然后只需用旧固件对路由器执行“升级”即可完成降级。

尽管固件降级是可行的,但 WR841N 实际上会进行校验,不会接受面向不同国家/地区销售的硬件所对应的固件。因此,对于那些所在国家/地区的 TP-Link 官网不提供易受攻击固件版本(例如美国)的人来说,他们需要绕过 http 服务器中的校验,将易受攻击的固件直接写入设备的 flash 芯片。这就是本仓库的主要用途。

我还为 WR841N 交叉编译了静态 busybox 和 gdbserver,供想要尝试调试和复现该漏洞利用的人使用。

备份你的 flash 分区

在尝试覆写你的 flash 分区之前,你应该先备份当前的分区,以便在试用完这个易受攻击的版本后恢复你的路由器。

我假设你已经熟悉串口控制台的使用,因此硬件部分我就不赘述了。

  1. 在你选择的机器上搭建一个 tftp 服务器。

  2. 在 WR841N 控制台中:
    (将 IP 地址替换为你 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. 使用 binwalk 检查 .bin 文件,确保你已成功备份 flash 分区。


如何用易受攻击的分区覆写 flash 分区

WR841N 中的 flash 分区如下:

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"

你需要覆写的主要分区是 rootfs(mtd2),但为了稳定性起见,我们也会覆写 boot 和 kernel。
我没有提供 config 和 radio 分区,因为它们不影响该漏洞,而且你肯定不想为了规避潜在的法律问题而去改动 RF 设置。


  1. 通过 tftp 将 flashcp 传输到 WR841N。

在 WR841N shell 中:

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

(当然,请将 IP 地址替换为运行 tftp 服务器的机器的 IP 地址。)


  1. 将 TW_wr841N_mtd0_boot_180516.bin 传输到 WR841N 并使用 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

注意:传输和覆写分区的顺序无关紧要,但请务必**一个一个地**进行,不要一次性将所有 .bin 文件传输到 WR841N。
在传输下一个 .bin 文件之前,先删除已刷写完成的 .bin 文件。路由器的内存非常有限,如果向它的 ramfs 传输太多内容,它会崩溃!

  1. 将 TW_wr841N_mtd1_kernel_180516.bin 传输到 WR841N 并使用 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. 将 TW_wr841N_mtd2_rootfs_180516.bin 传输到 WR841N 并使用 flashcp 覆写(这是最大的分区,因此 flashcp 需要一些时间才能完成):
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. 重启路由器,你应该会看到其 Web 管理页面全部变为繁体中文,且固件版本为 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n。



FW

备注

  1. ZDI 提供的 PoC 在本仓库提供的固件版本上无法开箱即用,因为内存偏移不同。你可以尝试修改 ZDI 的 PoC 或编写自己的漏洞利用程序 :)

  2. 所有二进制文件均由我使用 buildroot-2021.02.6 交叉编译。

  3. 固件的语言不会造成太大影响,因为调试和开发漏洞利用的大部分工作都在控制台中完成。不过,如果确实有人需要并提出请求,我可以尝试从易受攻击的 EU 或 JP 版本构建可刷写的分区。

  4. 不用说,进行硬件修改(例如覆写 flash 芯片分区)存在风险。请自行评估风险并决定是否要这样做。
下载工具