6.7 KiB
1883 - MQTT渗透测试(Mosquitto)
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品The PEASS Family
-
加入💬 Discord群组或电报群组或关注我在Twitter上的🐦@carlospolopm。
-
通过向hacktricks repo和hacktricks-cloud repo提交PR来分享你的黑客技巧。
基本信息
MQTT代表MQ Telemetry Transport。它是一种发布/订阅的极其简单和轻量级的消息传递协议,专为受限设备和带宽有限、延迟高或不可靠的网络设计。设计原则是在尽量减少网络带宽和设备资源需求的同时,也尽量确保可靠性和一定程度的传递保证。这些原则也使得该协议成为新兴的“机器对机器”(M2M)或“物联网”世界中连接设备的理想选择,并适用于带宽和电池功耗有限的移动应用。
默认端口: 1883
PORT STATE SERVICE REASON
1883/tcp open mosquitto version 1.4.8 syn-ack
检查流量
MQTT代理在收到CONNECT数据包后会发送CONNACK数据包作为响应。返回码0x00表示凭据有效,返回码0x05表示凭据无效。0x05示例:
暴力破解MQTT
MQTT渗透测试
身份验证是完全可选的,即使正在执行身份验证,默认情况下不使用加密(凭据以明文形式发送)。仍然可以执行中间人攻击来窃取密码。
要连接到MQTT服务,可以使用:https://github.com/bapowell/python-mqtt-client-shell,并订阅所有主题:
> connect (NOTICE that you need to indicate before this the params of the connection, by default 127.0.0.1:1883)
> subscribe "#" 1
> subscribe "$SYS/#"
你还可以使用https://github.com/akamai-threat-research/mqtt-pwn
你还可以使用:
apt-get install mosquitto mosquitto-clients
mosquitto_sub -t 'test/topic' -v #Subscriribe to 'test/topic'
或者你可以运行以下代码尝试连接到一个没有身份验证的MQTT服务,订阅所有主题并监听它们:
#This is a modified version of https://github.com/Warflop/IOT-MQTT-Exploit/blob/master/mqtt.py
import paho.mqtt.client as mqtt
import time
import os
HOST = "127.0.0.1"
PORT = 1883
def on_connect(client, userdata, flags, rc):
client.subscribe('#', qos=1)
client.subscribe('$SYS/#')
def on_message(client, userdata, message):
print('Topic: %s | QOS: %s | Message: %s' % (message.topic, message.qos, message.payload))
def main():
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(HOST, PORT)
client.loop_start()
#time.sleep(10)
#client.loop_stop()
if __name__ == "__main__":
main()
更多信息
来自这里:https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b
发布/订阅模式
发布/订阅模式由以下组成:
- 发布者:将消息发布到代理中的一个或多个主题。
- 订阅者:订阅代理中的一个或多个主题,并接收发布者发送的所有消息。
- 代理:将发布者的所有消息路由到订阅者。
- 主题:由一个或多个级别组成,级别之间用正斜杠分隔(例如,/smartshouse/livingroom/temperature)。
数据包格式
每个 MQTT 数据包都包含一个固定的标头(图 02)。图 02:固定标头
固定标头的第一个字段表示 MQTT 数据包的类型。所有数据包类型都列在表 01 中。表 01:MQTT 数据包类型
Shodan
port:1883 MQTT
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?想要在 HackTricks 中宣传你的公司吗?或者你想要获取最新版本的 PEASS 或下载 PDF 格式的 HackTricks吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品——The PEASS Family
-
加入💬 Discord 群组 或 Telegram 群组,或者关注我在Twitter上的🐦@carlospolopm。
-
通过向hacktricks 仓库和hacktricks-cloud 仓库提交 PR 来分享你的黑客技巧。