rudra-patell/tp-link_UART-root-shell

GitHub: rudra-patell/tp-link_UART-root-shell

演示通过 UART 调试接口和固件逆向分析,在无需网络漏洞的情况下获取 TP-Link 路由器 root 权限的完整硬件安全研究项目。

Stars: 0 | Forks: 0

# TP-Link TL-WR850N — UART 调试接口与固件分析 ### 从物理访问 → 固件提取 → Root Shell ![Status](https://img.shields.io/badge/Status-Completed-success) ![Platform](https://img.shields.io/badge/Environment-Arch--Linux%20(WSL)-blue) ![Tools](https://img.shields.io/badge/Tools-Binwalk%20%7C%20JohnTheRipper%20%7C%20ESP32-red) ## 概述 对 TP-Link TL-WR850N (TH&IN) v3 路由器进行了一次从硬件到软件的完整安全分析,展示了暴露的 UART 调试接口如何在没有任何基于网络的漏洞利用下,获取完整的 root shell 访问权限。 涵盖:硬件侦察、波特率检测、固件提取、文件系统分析和凭证恢复。 ## 方法论 ``` Physical Access └─► Identify UART pins on PCB └─► Connect ESP32, detect baud rate └─► Access serial console (TTY) ├─► Direct root shell (if unprotected) └─► Password protected └─► Download firmware binary └─► binwalk extraction → SquashFS └─► Extract password hash → John the Ripper └─► Authenticate → Root Shell ``` # 阶段 1:硬件侦察与 UART ## PCB 上的 UART 引脚 TL-WR850N 的 PCB 上直接标注了 UART 引脚 —— TX、RX、VCC、GND。为此焊接了标准排针以进行连接。 ## ESP32 接线 型号 - ESP32 (WROOM32) DevKit V1 * TX → Pin 16 (RX2) * RX → Pin 17 (TX2) * GND → GND ## 波特率检测 大多数 TP-Link 路由器的默认波特率为:**115200 bps**。 使用提供的波特率扫描器(`src/`)为 ESP32 刷入固件,连接并开启路由器电源,然后在串口监视器中观察 U-Boot 日志。出现乱码 ASCII 输出意味着波特率错误。 ## 串口输出 # 阶段 2:固件提取 该设备受密码保护 —— 默认凭证(`admin:admin`、`root:admin`)无效。从 TP-Link 官方网站下载了固件二进制文件,并使用 binwalk 进行提取。 ``` binwalk -e firmware.bin ``` 在运行此命令之前,请确保已安装 `binwalk` 和 `squashfs`。这将创建一个包含文件系统的 `/extraction` 文件夹。 ## Binwalk 输出 在提取的文件系统中导航至 `/etc`。您会发现包含用户名和哈希密码的 `passwd.bak` 或 `shadow` 文件。 ## 提取过程 # 阶段 3:凭证恢复 提取的哈希格式为 MD5-crypt (`$1$`): ``` $1$$iC.dUsGpxNNJGeOm1dFio/ ``` 使用 John the Ripper 及其内置字典进行破解: ``` john --format=md5crypt hash.txt ``` ## 破解结果 ![John 输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bfc0d564ca113637.png) # Root 访问权限 使用恢复的凭证通过 UART 串口控制台进行身份验证: ## Root Shell 已获得完整的 root 访问权限 —— 无需网络漏洞利用,无需 CVE,也无需软件漏洞。对设备的物理访问权限足以实现这一切。 # ESP32 波特率扫描器 — 设置 ## 克隆仓库 ``` git clone https://github.com/rudra-patell/tp-link_UART-root-shell.git cd tp-link_UART-root-shell ``` ## 在 PlatformIO 中打开 ### 选项 1:VS Code(推荐) 1. 安装 **VS Code** 2. 安装 **PlatformIO IDE 扩展** 3. 点击 **File → Open Folder** → 选择项目文件夹 PlatformIO 将通过 `platformio.ini` 自动检测该项目。 ### 选项 2:CLI ``` pip install platformio pio run --target upload pio device monitor ``` **注意事项:** * 确保在 `platformio.ini` 中设置了正确的 COM 端口 * 默认监视器波特率:`115200` * 如果上传失败,请检查 USB 驱动程序和权限 ## 关键要点 * UART 调试接口在消费级硬件中经常被暴露并贴上标签 * 经过厂商修改的 SquashFS 文件系统通常在 `/etc` 中包含可恢复的凭证 * MD5-crypt 哈希 (`$1$`) 按照现代标准来看安全性较弱,极易被破解 * 对设备的物理访问应被视为等同于完整的系统被攻破 —— 固件加密和安全启动是有效的缓解措施 ## 使用的工具 | 工具 | 用途 | |---|---| | ESP32-WROOM-32 | UART 桥接器 / 波特率扫描器 | | binwalk | 固件提取 | | John the Ripper | MD5-crypt 哈希破解 | | PlatformIO | ESP32 固件开发 | ## 许可证 MIT
标签:DOS头擦除, StruQ, UART调试, 云资产清单, 固件分析, 密码破解, 插件系统, 物联网安全, 硬件安全, 逆向工程