MQTT未授权访问及检测工具

admin 2025年5月8日16:50:28评论0 views字数 2004阅读6分40秒阅读模式

什么是MQTT?MQTT是一种轻量级的物联网通信协议,基于发布-订阅模式,广泛用于设备与设备之间的实时通信。MQTT Broker是消息的中心枢纽,负责接收、存储和分发消息。

MQTT未授权访问的风险:

    • 数据泄露
      :攻击者可能订阅敏感主题,获取不应公开的信息。
    • 消息伪造
      :攻击者可能发布虚假消息,干扰设备的正常运行。
    • 拒绝服务(DoS)
      :攻击者可能发送大量垃圾消息,占用网络带宽或耗尽Broker资源。
    • 设备控制
      :攻击者可能通过发布控制命令,远程控制设备。
MQTT未授权访问的验证
下载MQTTX客户端: https://mqttx.app/downloads
MQTT未授权访问及检测工具
连接成功画面
MQTT未授权访问及检测工具
检测poc
from rich import print
from rich.panel import Panel
from rich.text import Text

panel = Panel(Text("大家好,我是丁永博。欢迎关注微信公众号:丁永博的成长日记!", justify="center"))
print(panel)
import socket
import paho.mqtt.client as mqtt
from concurrent.futures import ThreadPoolExecutor
# 配置参数
PORT = 1883
TIMEOUT = 5  # 超时时间(秒)
THREADS = 50  # 并发线程数
def check_mqtt(ip):
    """检测指定IP是否存在MQTT未授权访问"""
    try:
        # 先检查端口是否开放
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.settimeout(TIMEOUT)
            if s.connect_ex((ip, PORT)) != 0:
                return None
        # 初始化MQTT客户端
        client = mqtt.Client()
        client.connect(ip, PORT, keepalive=TIMEOUT)

        # 设置回调函数
        result = {"status": False}
        def on_connect(client, userdata, flags, rc):
            result["status"] = (rc == 0)  # 0表示连接成功

        client.on_connect = on_connect
        client.loop_start()
        client.loop_stop()

        return ip if result["status"] else None
    except (mqtt.WebsocketConnectionError, 
            ConnectionRefusedError,
            TimeoutError):
        return None
    except Exception as e:
        print(f"检测{ip}时发生异常:{str(e)}")
        return None
def main():
    # 读取目标IP列表
    try:
        with open("1.txt", "r") as f:
            ips = [line.strip() for line in f if line.strip()]
    except FileNotFoundError:
        print("错误:1.txt文件不存在!")
        return
    # 使用线程池并发检测
    vulnerable = []
    with ThreadPoolExecutor(max_workers=THREADS) as executor:
        results = executor.map(check_mqtt, ips)
        for ip, status in zip(ips, results):
            if status:
                print(f"[+] 发现漏洞:{ip}")
                vulnerable.append(ip)
            else:
                print(f"[-] 安全:{ip}")
    # 保存结果
    if vulnerable:
        with open("2.txt", "w") as f:
            f.write("\n".join(vulnerable))
        print(f"发现{len(vulnerable)}个漏洞,结果已保存到2.txt")
    else:
        print("未发现MQTT未授权访问漏洞")
if __name__ == "__main__":
    # 检查依赖库
    try:
        import paho.mqtt
    except ImportError:
        print("请先安装paho-mqtt:pip install paho-mqtt")
        exit(1)

    main()

使用方法:

  1. 安装依赖:pip install paho-mqtt
  2. 安装依赖:pip install rich
  3. 创建目标文件:1.txt(每行一个IP地址)
  4. 运行脚本:python 3.py
  5. 查看结果:2.txt(保存存在未授权访问的主机)
MQTT未授权访问及检测工具

注意事项:

  • 本工具仅限授权测试使用
  • 大规模扫描前建议调整THREADS参数(推荐50-100)
  • 企业内网环境可将TIMEOUT缩短至2秒
  • 敏感环境建议配合代理池使用
 

原文始发于微信公众号(丁永博的成长日记):MQTT未授权访问及检测工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月8日16:50:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   MQTT未授权访问及检测工具http://cn-sec.com/archives/4042532.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息