你在 GitHub 挖到了一个 .env,或者在日志里翻到了一串配置:
1 | MQTT_HOST=mqtt.example.com |
不知道怎么用?本文给最直接的步骤。
本文只讨论授权环境下的测试思路,目标是验证访问控制是否正确,而非追求对真实系统的破坏性操作。
先搞懂什么是 MQTT,为什么拿到这串东西很关键
MQTT 是物联网、车联网、即时通信后台最常用的消息协议之一:发布者和订阅者不直接对话,所有消息全靠 broker(消息代理)中转。你发一条到 cmd/device-001/reboot,订阅了这个 topic 的所有设备都会收到。
协议本身只负责”把消息投递给订阅者”,完全不管”谁可以连、谁可以看、谁可以发”——认证和授权全靠 broker 配置。
大量部署默认开了弱配置:
- 允许匿名连接
- 连上就能订阅
#看全部 - 连上就能给任意 topic 发指令
- 明文
1883传输 - retain 消息持久化
这意味着你手里这串东西,很可能不是”只能连一下”,而是”能读全部数据、能发控制指令”。
第一步:用 MQTTX 连上去
MQTTX 是跨平台图形化客户端,拿着泄露信息连最快。
- 去 EMQX/MQTTX releases 下载安装并打开。
- 点击左侧菜单栏的
+按钮(或右侧的”新建连接”): - 填写连接信息:
- Broker 信息:Host 前选
mqtt://(明文1883)或mqtts://(TLS8883),填地址和端口。Client ID 用泄露的,或点刷新生成新的: - 用户认证:填入泄露的 Username 和 Password:
- SSL/TLS:如果是
8883且自签名,切到 SSL/TLS 标签,勾”Enable SSL/TLS”,选”Self signed”或勾”Skip server certificate verification”:
- Broker 信息:Host 前选
- 点右上角”Connect”。
连接成功后界面右上角变绿,显示”Connected”。
第二步:订阅 #,看能拿到什么数据
连接成功后第一个要做的:订阅 #。
# 是多层通配符,等于订阅 broker 上所有非 $ 开头的主题——你可以看到所有正在流动的消息,以及没人发也推过来的 retained 消息(broker 保存的最后一条历史快照)。
在 MQTTX 里订阅:
- 点击左下角的
New Subscription按钮: - Topic 填
#,QoS 选0或1 - 点”Confirm”
右侧消息列表会开始刷,你会看到:
- 设备遥测(温度、湿度、电量、GPS)
- 设备状态(在线/离线、故障码)
- 配置下发(WiFi 账号密码、时区设置)
- OTA 固件更新(下载 URL、版本号)
- 业务数据(聊天内容、订单、用户操作)
除了 #,还要试 $SYS/#,这是 broker 自身的系统主题,会暴露版本、连接数、上线/下线事件。
如果 # 数据量太大,用单层通配符 + 缩小范围:device/+/status、+/event/#。
这一步只看不动:截图保存样本、记录 broker 版本、理解业务逻辑和命令格式。
第三步:发布测试,看写权限能造成什么危害
有了前面的 topic 理解,这一步验证写权限存在,以及写权限对应的具体危害。
在 MQTTX 里发布:
- 在页面右下角填入你观察到的命令 Topic,选 QoS 和 Retain,输入 payload 后点发送:
- Topic 填你看到的命令主题,例如
cmd/device-001/reboot、config/device-001/set、ota/device-001/firmware - Payload 按你看到的格式填测试 payload,例如
{"cmd":"reboot","from":"test"} - Retain 勾上(勾了之后,broker 会保存这条消息,后续每个新订阅者/重连设备都会收到)
- 点发送(macOS
command + enter,其他系统control + enter)
发布后看:
- 你自己的订阅列表里有没有收到(说明 topic 匹配、写权限存在)
- topic 的 retained 消息是不是被覆盖了
高频利用点(授权测试仅验证权限存在,不实际执行破坏性操作):
- 任意命令发布:直接控制设备(开关、重启、配置修改)
- retain 投毒持久化:勾 retain 发布恶意配置/OTA URL,后续所有新上线的设备都会收到
- 伪装设备/客户端:伪造设备状态、上报假数据、干扰监控系统
发布测试要克制:优先用无害 topic(例如 test/pentest、ping/pong)和明确的测试 payload,确认写权限存在即可。
总结
拿到泄露的 MQTT 密钥后,最直接的利用三步:用 MQTTX 连上去→订阅 # 看真实数据→发布测试验证控制能力。
泄露后最直接最具体的危害:拿到设备位置和遥测、拿到配置和固件 URL、能控制设备、能投毒持久化指令。





