EMQX命令执行后渗透-网络安全论坛-网络安全-阻击者联盟

EMQX命令执行后渗透

原文地址:

EMQX命令执行后渗透

欢迎转发,请勿抄袭

        上一期说到EMQX后台插件命令执行,但是这个命令执行结果是无法回显示,那么如何通过暴露的mqtt服务进行利用呢?命令执行容易,后利用很难(出网情况就不用折腾了)。

        mqtt是一种轻量级的消息协议,专门用于在低带宽、不可靠网络或双方之间需要进行简单通信的场景下传输消息。用于物联网设备之间通讯。采用发布主题和订阅主题方式通讯。

利用方式一:

        使用mqtt协议将命令执行结果通过发布主题形式回显。使用python编写一个mqtt程序,采集执行的结果发布。同时订阅收到的命令执行。编译好的可执行文件,通过插件的方式上传并执行。将执行文件放到my_emqx_plugin/src

d2b5ca33bd20250510065823

并添加以下命令在命令执行处添加执行的命令。

d2b5ca33bd20250510065833

回到emqx后台管理,将刚编译好的插件上传执行,多数会提示失败(因为执行到rce那一步,会卡住下面的执行)但是目标程序已经运行。

d2b5ca33bd20250510065845

执行完后,在主页看到上线情况。

d2b5ca33bd20250510065856

可通过mqttx客户端进行连接对客户端进行操控利用。

d2b5ca33bd20250510065911

rce执行程序发布一个tx/test主题,订阅rx/test主题。mqttx则要相反,订阅tx/test主题,发布rx/test主题。

d2b5ca33bd20250510065922

到这一步已经实现了通过mqtt协议将命令执行结果回显。如果卸载不了插件,使用mqtt里面的命令执行起一个rce,再关掉插件起的rce,就可以卸载插件了。

d2b5ca33bd20250510065937

利用方式二:

        使用mqtt协议特性通过发布主题形式传输数据,达到内网穿透。我这里使用一个http代理去修改,因为http也是一个请求返回一个响应。服务端httpserver->httpserver-mqtt,客户端httpclient->httpclient-mqtt。流程图

d2b5ca33bd20250510065952

编译好可执行文件,将httpserver和httpserver-mqtt通过插件方式上传到目标机器。

d2b5ca33bd20250510070006

d2b5ca33bd20250510070013

此时还没运行可以看到只有两个连接,添加一个1.sh的文件。目的是为了两个可执行文件同时执行。

d2b5ca33bd20250510070024

执行1.sh后,会将server和servertomqtt的两个个可执行文件执行。通过面板发现已经成功运行。

d2b5ca33bd20250510070038

使用连接客户端进行连接访问隧道。

d2b5ca33bd20250510070049

成功通过隧道代理访问里面内部资源,默认172.17.0.1为宿主机器ip。

d2b5ca33bd20250510070101

mqtt数据流

d2b5ca33bd20250510070112

d2b5ca33bd20250510070117

 

请登录后发表评论

    没有回复内容