文章总结: 本文展示通过UART调试口物理获取TP-LinkTL-WR845N路由器未认证rootshell的过程。作者使用万用表识别四根铜焊盘引脚角色,连接CP2102转接器,在115200波特率下获取启动日志并直接进入rootshell。文章强调物理接触可绕过软件安全措施,并提供Jtagulator自动化找脚经验与踩坑教训。建议重视硬件调试接口暴露风险,加强物理访问控制。
综合评分: 78
文章分类: IoT安全,渗透测试,硬件安全
四根铜焊盘听出 root:TP-Link TL-WR845N UART 未认证调试口
黑卷
黑卷
赛博安全攻防日记
2026年9月23日 13:34
上海
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
四根铜焊盘听出 root:TP-Link TL-WR845N UART 未认证调试口
做 IoT 安全的人,很容易把设备当成「软件黑盒」:以为安全全靠固件强度和密码学复杂度。可软件不是空中楼阁,它得跑在硅片上。硅片要是愿意说话,你只要会听,调试口往往比 Web 后台诚实得多。
这篇跟着 IoTSec Forum 上 sanisapatrikar 的实操:拆开一台 TP-Link TL-WR845N v4.0,用万用表把四根无名铜焊盘认成 GND / VCC / TX / RX,再从 UART 直接拿到未认证 root shell。重点不是炫操作,而是提醒:量产板留着开发期调试口,物理接触面前,门户密码学经常直接失效。
工器具
开干前先把台子摆齐:
-
目标路由:
TP-Link TL-WR845N(v4.0)
目标机:TP-Link TL-WR845N v4.0
-
CP2102 USB-to-TTL:
把板子 3.3 V 电平的串口波形,翻成笔记本认得的 USB 数据
CP2102 USB-to-TTL
-
Jtagulator:
可编程「接线总机」,用来暴力枚举隐藏调试脚
台架:路由与 Jtagulator
-
PC:
PuTTY / Picocom 一类终端,抓启动日志、交互串口
目标与思路
撬开塑料壳,经典三件套就在眼前:MediaTek SoC、Zentel SDRAM、以及 4MB 的 SPI Flash。
很多人第一反应是焊掉 Flash 直接 dump。静态固件经常打包、压缩甚至加密;可 SoC 要真正跑起来,总得把固件解到 RAM。若能在系统「醒来之后、上锁之前」搭上一根线,看到的就是明文活系统——这就是 UART 的价值。
万用表四步认脚
SoC 旁边躺着一组未焊接的 4 针焊盘:没丝印、没标注,就四块裸铜。上逻辑分析仪之前,先用万用表把物理角色摸清楚。
-
锚点 GND:
通断档,一端贴网口金属屏蔽,另一端点焊盘;响的那根就是地。
-
电源轨 VCC:
改直流电压档,板上电后稳稳 3.3 V 的那根。
-
心跳 TX:
黑表笔钉住 GND,红表笔点第三脚再重启;开机前几秒电压在 2.8~3.3 V 乱跳——那是启动日志在往外喷,这就是 TX。
-
听众 RX:
剩下那根静静趴在 0 V 附近的,就是等输入的 RX。
血泪教训: 用 CP2102 桥到电脑时,只接 GND,TX↔RX 交叉,VCC 坚决不接。板子自供电再外灌电,轻则 USB 控制器抽风,重则把 SoC 灌死。
启动日志泄密
接线就绪,PuTTY 开到这台路由的 115200,上电——电噪声忽然变成干净 ASCII。U-Boot 把架构底牌摊开:CPU 频率、内存大小,还有完整 MTD 分区表;内核日志则标清 U-Boot、kernel、SquashFS root 各自落在哪块。
压轴戏更直白。/etc/init.d/rcS 跑完,系统不询问用户名密码,直接甩出:
starting pid 78, tty '/dev/ttyS1': '/bin/sh'
回车一下,提示符变成 #——活文件系统上的未认证 root。Web 门户上再漂亮的密码策略,在这四根铜脚面前都显得多余。
自动化找脚:踩坑与被动监听
不是每块板都摆得这么规矩。面对更「硬」的目标,作者上了 Jtagulator 做引脚暴力枚举。
从手测切到自动化,自己也会掉坑。典型是「双串口陷阱」:Jtagulator 对主机死守 115200,对目标脚却在动态改速——忘了这点,日志全是噪音。
主动扫描(U 模式)一度空手。主动模式会按引脚排列组合扫波特率,而启动日志只在上电后闪几秒,窗口很容易错过。可真正翻 error 日志才发现:扫描根本没起步。配 U 模式要走一串提示;某处 CLI 只要小写 y,敲成大写 Y 会默默把配置弄崩。再试又撞上 Value out of range!,扫描在「按空格开始」之前就死了。
Jtagulator:配置阶段 Value out of range,扫描未真正发出
可靠做法是别跟配置死磕,改被动连续监听(T 命令):上电瞬间抓住 TX 噪音,同时估出波特率。再切 UART Passthrough(P),Jtagulator 就变成透明桥,重新回到那个 root shell。
顺手提一句通用经验:嵌入式 Linux shell 认的是真换行 \x0A,不是 Windows 式 \x0D。对它说「Windows」,它只会干瞪眼。
小结
编译出来的「理论安全」,和焊盘上的物理现实,中间差着一条沟。软件默认自己跑在隔离气泡里;你一旦摸到硅片,规则就改由你定。
不一定非要硬刚密码学。有时,听听线上的低语就够了。
作者:sanisapatrikar / IoTSec Forum
免责声明:
本人所有文章均为技术分享,均用于防御为目的的记录,请勿用于其他用途,否则后果自负。
更多 IoT / 车联网 / 机器人 / AI 安全资料在星球里,扫码进「车联网攻防日记」。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博安全攻防日记 黑卷
黑卷《四根铜焊盘听出 root:TP-Link TL-WR845N UART 未认证调试口》