记录第一次对MQTT协议的渗透测试经历

admin 2024年2月11日23:27:51评论34 views字数 2294阅读7分38秒阅读模式
  • 0x01 阅读须知

花果山的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!
  • 0x02 MQTT简介

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为远程连接设备提过实时可靠的消息服务,作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

  • 0x03 环境搭建

在这里我是用ubuntu来搭建MQTT服务器。

安装MQTT服务:sudo apt-get install mosquitto mosquitto-clients -y安装完成后查看是否安装成功:sudo systemctl status mosquitto.service

记录第一次对MQTT协议的渗透测试经历

可以看到MQTT服务已经在运行了,接下来是修改配置文件。

MQTT的配置文件叫mosquitto.conf ,一般存放在 /etc/mosquitto 目录下sudo vim /etc/mosquitto/mosquitto.conf 在文件最底下添加如下内容:listener 1883allow_anonymous truepassword_file /etc/mosquitto/pwfile.example

内容解析:

listener是MQTT监听的端口号,可以自行修改。

allow_anonymous是匿名访问漏洞的罪魁祸首,当为true时,便支持匿名访问,为false则禁止匿名访问。

password_file是存放MQTT账号密码的文件参数。

修改完后文件内容如下:

记录第一次对MQTT协议的渗透测试经历

使用 mosquitto_passwd 可以添加账号密码。

使用方法:mosquitto_passwd 存放密码文件路径 账号命令如下:sudo mosquitto_passwd /etc/mosquitto/pwfile.example test

记录第一次对MQTT协议的渗透测试经历

原来内置了一些账号,如果不想用内置账号,也可以使用 -c 来指定创建存放密码文件路径,需要在配置文件中修改password_file。

配置完MQTT协议后需要重启MQTT服务。

命令如下:sudo systemctl restart mosquitto.service

接下来运行MQTT协议 发布和订阅 主题就行了。

订阅主题命令:sudo mosquitto_sub -h 服务器ip -t 订阅的主题 -u 用户名 -P 密码发布主题命令:sudo mosquitto_pub -h 服务器ip -t 订阅的主题 -u 用户名 -P 密码 -m 发布的消息

记录第一次对MQTT协议的渗透测试经历

可以看到发布消息后服务端可以接收到消息,这就算搭建成功了。
  • 0x04 工具搭建

由于在搭建工具过程中遇到了一些坑,这里不展示出来了,具体搭建过程,请各位看官老爷移步到 阅读原文 处点击 阅读原文 进行查看整一篇文章。
  • 0x05 攻击复现

1、匿名访问漏洞复现

MQTT-PWN 自带匿名访问功能

匿名连接命令:connect -o ip验证命令:system_info

记录第一次对MQTT协议的渗透测试经历

出现MQTT协议基础信息,证明存在MQTT匿名访问漏洞。

先执行 discovery 待出现 finished! 的字样再执行 scans 查看发现了哪些主题,使用 -i 参数接 id 订阅scans -i 1最后执行 messages  可查看通信的消息

记录第一次对MQTT协议的渗透测试经历

记录第一次对MQTT协议的渗透测试经历

记录第一次对MQTT协议的渗透测试经历

具体是怎么执行的,我还没研究,就先到这吧。

修复建议:在配置文件中将 allow_anonymous 参数修改为 flase,若配置文件中没有该参数,添加一个即可。

2、暴力破解攻击复现

MQTT-PWN自带有暴力破解功能,由于MQTT协议默认开启了匿名访问,我们需要先把MQTT协议的匿名访问配置禁用了,再进行暴力破解测试。

打开mqtt配置文件,修改allow_anonymous参数为false即可,重启mqtt协议即可sudo vim /etc/mosquitto/mosquitto.confsudo systemctl restart mosquitto.servicesudo mosquitto_sub -h 192.168.111.131 -t test -u "test" -P "test"

配置完MQTT协议的信息如下:

记录第一次对MQTT协议的渗透测试经历

重启MQTT协议后,启动MQTT-PWN进行暴力破解。

sudo docker-compose run cli暴力破解的命令如下:bruteforce --host ip --port port默认为 1883 端口

MQTT-PWN会根据自带的用户名字典和密码字典进行暴力破解,自带的字典在 mqtt-pwn/resources/wordlists/ 目录下,当然你也可以自定义字典,只需将字典进行替换即可。

记录第一次对MQTT协议的渗透测试经历

得到账号密码,进行账号密码连接即可。

connect -o 192.168.111.131 -u test -w test

记录第一次对MQTT协议的渗透测试经历

完结!撒花!
  • 0x06 结语

MQTT-PWN的其他参数还有待研究,对于MQTT协议,截止到发文,我所知道的漏洞即利用方式均已解释完,其实难点不在漏洞复现,而在攻击工具的搭建上,搭建过程中会报错,我翻阅了无数资料均无法解决,最后在debian的官网得到了解决思路,所以在此做一下总结和记录。
不要吝啬你们的小手手,来个三连吧!!!

原文始发于微信公众号(花果山讲安全):记录第一次对MQTT协议的渗透测试经历

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月11日23:27:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记录第一次对MQTT协议的渗透测试经历http://cn-sec.com/archives/2488829.html

发表评论

匿名网友 填写信息