MQTT 协议安全测试方法

  1. MQTT 协议
  2. 测试工具
    1. MQTT-PWN
      1. 安装
    2. Nmap
    3. MQTTX
  3. 常见攻击点
    1. 未授权订阅
    2. 暴力破解
  4. 参考

MQTT 协议


测试工具

MQTT-PWN

Github

仓库太久没更新,很多依赖只能在 Python 3.6 下安装,并且还需要 PostgreSQL 数据库才能启动,所以使用 Docker 部署启动最快捷省事,由于安装过程比较复杂这里记录一下

安装

  1. 克隆仓库
    git clone https://github.com/akamai-threat-research/mqtt-pwn.git
    
  2. 修改 Dockerfile 文件
    因为jessie版本已经停止支持,所以需要修改源为archive.debian.org
    • 在 RUN apt-get update 前加入如下代码:RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && echo "deb http://archive.debian.org/debian/ jessie main" >/etc/apt/sources.list && echo "deb-src http://archive.debian.org/debian/ jessie main" >>/etc/apt/sources.list && echo "deb http://archive.debian.org/debian-security jessie/updates main" >>/etc/apt/sources.list && echo "deb-src http://archive.debian.org/debian-security jessie/updates main" >>/etc/apt/sources.list
    • apt-get install后添加 --force-yes
      修改后 Dockerfile 如下:
    FROM python:3.6-jessie
    
    RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && echo "deb http://archive.debian.org/debian/ jessie main" >/etc/apt/sources.list && echo "deb-src http://archive.debian.org/debian/ jessie main" >>/etc/apt/sources.list && echo "deb http://archive.debian.org/debian-security jessie/updates main" >>/etc/apt/sources.list && echo "deb-src http://archive.debian.org/debian-security jessie/updates main" >>/etc/apt/sources.list
    
    
    RUN apt-get update
    RUN apt-get install --force-yes software-properties-common less vim -y
    
    ENV INSTALL_PATH /mqtt_pwn
    RUN mkdir -p $INSTALL_PATH
    WORKDIR $INSTALL_PATH
    
    COPY requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    
    COPY . .
    
  3. 构建 mqtt-pwn
    docker-compose up --build --detach
    
  4. 运行 mqtt-pwn
    docker-compose run cli
    

MQTT-PWN 命令行界面

Nmap

官网 Github

MQTTX

官网


常见攻击点

未授权订阅

可以使用 nmap 的脚本对端口进行探测

nmap <主机> -p1883 --script=mqtt-subscribe.nse

如不存在未授权订阅结果为

PORT     STATE SERVICE
1883/tcp open  mqtt
|_mqtt-subscribe: Connection rejected: Not Authorized

存在未授权订阅则会显示

PORT     STATE SERVICE
1883/tcp open  xxx version x.x.x
| mqtt-subscribe:  
|   Topics and their most recent payloads:
|    ……
|_ ……

如:

MQTT 匿名访问探测的 Nmap 扫描结果

暴力破解

bruteforce --host <主机> --port <端口>

connect -o 192.168.111.131 -u test -w test

参考

Welcome to MQTT-PWN! — MQTT-PWN 1.0 documentation
记录一次对MQTT协议的渗透测试经历 - spmonkey


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:MQTT 协议安全测试方法

字数:534

本文作者:cnlnn

发布时间:2025-07-31, 06:22:00

最后更新:2025-12-15, 12:40:29

原始链接:https://cnlnn.pages.dev/posts/mqtt-security-testing/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。