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

-blue)

## 概述
对 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
```
## 破解结果

# 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
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
```
## 破解结果

# 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调试, 云资产清单, 固件分析, 密码破解, 插件系统, 物联网安全, 硬件安全, 逆向工程