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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2019-17147 — 对 CVE-2019-17147(TP-Link TL-WR841N 路由器中的栈缓冲区溢出漏洞)的全面逆向工程与利用。包括固件分析、硬件调试以及用于未授权远程代码执行的分阶段 shellcode 注入利用程序。 | Kitploit
工具/GitHubGitHub/imnot-ye/cve-2019-17147
嵌入式系统安全物联网安全漏洞分析漏洞利用逆向工程Shellcode硬件黑客硬件安全论文与研究学习与教育固件分析二进制利用
447个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
imnot-ye/cve-2019-17147

CVE-2019-17147

对 CVE-2019-17147(TP-Link TL-WR841N 路由器中的栈缓冲区溢出漏洞)的全面逆向工程与利用。包括固件分析、硬件调试以及用于未授权远程代码执行的分阶段 shellcode 注入利用程序。

查看仓库

CVE-2019-17147:TP-Link TL-WR841N 漏洞利用

Banner

概述

本仓库记录了对 CVE-2019-17147 的全面逆向分析与利用过程,该漏洞是 TP-Link TL-WR841N 路由器(MIPSEL 架构)中的一个严重远程代码执行(RCE)漏洞。漏洞位于 httpd Web 服务器守护进程中,由于不正确的输入验证,通过自定义的 cstr_strncpy 函数导致基于栈的缓冲区溢出,从而在无需认证的情况下实现任意代码执行。

漏洞编号CVE-2019-17147
CVSS v3.18.8(高危)
攻击向量AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
类型基于栈的缓冲区溢出
组件/usr/bin/httpd

基础设施与工具

分析环境使用以下组件搭建:

  • 硬件: TP-Link TL-WR841N 路由器。
  • 硬件工具: CH341A 编程器(SPI Flash 读取)、USB-TTL 转换器(UART 控制台)、SOIC8 夹子。
  • 软件工具: flashrom(内存转储)、binwalk(固件提取)、IDA Pro(静态分析)、GDB-Multiarch(远程调试)、QEMU(MIPSEL 仿真)。
  • 固件版本: TL-WR841N(US)_V14_180319。

技术分析

1. 静态分析

该漏洞在 /usr/bin/httpd 二进制文件中被发现。通过 IDA Pro 的静态分析,发现了一个自定义字符串复制函数 cstr_strncpy,用于 HTTP 头部解析(特别是 Host 头部)。

IDA 图表

函数 cstr_strncpy 接受一个 copy_len 参数,该参数来源于源字符串长度,而非目标缓冲区大小。当提供过长的头部时,会导致经典的基于栈的缓冲区溢出。此外,操作链表结构的 http_parser_argStrToList 函数也受到了此溢出的影响,从而可以控制 next 和 prev 指针。

2. 动态分析

使用 gdbserver 进行运行时调试,确认了崩溃并控制了执行流程。内存映射(vmmap)分析揭示了严重缺乏安全加固:

  • 堆: RWX(读、写、执行) 权限。
  • ASLR: 对此二进制文件而言有限/无效。
  • NX: 已禁用。

VMMap

这种配置允许直接执行放置在堆上的 Shellcode,从而绕过了复杂的 ROP 链需求。

利用策略

漏洞利用链利用由损坏的链表指针派生出的 Write-What-Where 原语来实现 RCE。

  1. 堆喷射: 将 Shellcode 注入堆中。由于堆在请求之间持久存在,可以分阶段进行。
  2. 分段注入: 为了绕过 strcpy 中的空字节限制,通过多个请求发送有效载荷:
    • 阶段 1: 将 Shellcode 地址写入暂存区。
    • 阶段 2: 将目标 GOT 地址写入暂存区。
  3. GOT 覆写: 全局偏移表(GOT) 中的 atol 函数条目被覆写为 Shellcode 的地址。
  4. 触发执行: 漏洞利用程序强制调用 atol(通过 Content-Length 头部),将执行重定向到注入的 Shellcode。

漏洞利用图示

漏洞利用验证

最终的 Python 脚本成功自动化了该攻击,在端口 31337 上生成了一个 root shell。

Root Shell

缓解措施

该漏洞源于不安全的缓冲区管理编码实践。

  • 源代码修复: 将 cstr_strncpy 的使用替换为严格强制目标缓冲区大小限制的安全替代方案(例如,基于 sizeof(dest) 进行显式边界检查的 strncpy)。
  • 二进制加固: 启用 NX(禁止执行) 以防止在栈和堆上执行代码。启用完整的 ASLR 和 PIE(位置无关可执行文件)以随机化内存布局。

完整文档

有关整个过程的详细逐步指导,包括代码分析和环境设置,请参阅本仓库中的完整指南:

  • 🇮🇹 完整指南(意大利语)
  • 🇬🇧 完整指南(英语)

作者

  • Angelo Zullo
  • Simone Vitto
  • Vincenzo Cantatore

免责声明

本项目仅用于教育和研究目的。所提供的信息旨在提高物联网设备的安全性。作者不对本文所含信息或代码的任何滥用负责。


基于原始研究与分析。

下载工具