Zabbix安全:破解弱口令后执行命令,获取shell

如果你的Zabbix的Admin口令太弱或者使用了默认口令(Admin/zabbix),而被黑客破解了口令的话,Zabbix服务器在黑客面前就已经毫无抵抗力了。黑客可以创建“system.run[command,<mode>]”监控项执行命令,甚至获取服务器shell,获取root权限。

先介绍下“system.run[command,<mode>]”,这个监控项是agent自带的,使zabbix server可以远程在agent的机器上执行任意命令。方法有二:一是建立监控项,二是通过zabbix_get命令直接远程调用。命令执行权限限制于zabbix agent的启动用户,如果你为了方便,把agent的启动用户设置为root的话(AllowRoot=1),这是非常危险的。

下面模拟一个场景,展示黑客在获取Zabbix Admin口令的情况下,如何获取服务器的shell,甚至root权限:

这里利用NetCat(nc)命令打开shell,如果你的系统是RedHat/CentOS系列,nc可以通过yum下载到。

选择【Administration】->【Scripts】,创建一个script,如下图:

“Execute on”选择Zabbix server,“Commands”里输入:

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

上面的意思是打开一个shell,监听2222端口。

进入【Dashboard】界面,在下面随便点击一个Host,会弹出一个“Scripts”选项卡,点击上面创建的“create shell”,这样上面的命令就会被执行。

到zabbix server服务器上可以看到2222号端口已经在监听了。

下面我们在自己的机器上,用nc命令连接到server的shell:

上图显示我们成功获取了zabbix服务器的shell,而且是root权限!这是因为我的zabbix server是以root启动的。

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

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

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

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

4、经常打安全补丁,如果系统内核版本过低有漏洞的话,即使在zabbix用户下照样能获取root权限。

参考

sohu漏洞案例:

http://www.wooyun.org/bugs/wooyun-2013-023089

Netcat 命令:

http://www.oschina.net/translate/linux-netcat-command

时间: 2024-10-06 07:22:13

Zabbix安全:破解弱口令后执行命令,获取shell的相关文章

1.8-自动登陆后执行命令

再来看一个登陆后,执行命令然后退出的脚本: #!/usr/bin/expect set user "root" set passwd "123456" spawn ssh [email protected] expect { "yes/no" { send "yes\r"; exp_continue} "password:" { send "$passwd\r" } }        

连接Redis后执行命令错误 MISCONF Redis is configured to save RDB snapshots

今天在redis中执行setrange name 1 chun 命令时报了如下错误提示: (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the er

expect实现自动scp和ssh登录后执行命令,并向bash提供返回值

#!/bin/bash # 全局变量:用户名,普通用户密码,root密码 loginname="icgsu" userpwd="netentsec" rootpwd="netentsec" # 读取iplist cat /root/iplist | while read line do ip=($line) # scp脚本及ssh登录执行 /usr/bin/expect<<EOF set timeout 10 spawn scp /r

20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数

20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [[email protected] ~]# yum install -y expect 自动远程登录 2. 创建配置1.expect脚本(远程登录) [[email protected] ~]# vim 1.expect 添加内容(自动远程登录hao2机器并执行命令) #! /usr/bin/expect set host "192.168.211.129"

python实现Telnet远程登陆到设备并执行命令

#encoding=utf-8 import telnetlib import time def do_telnet(Host, username, password, finish, commands): # 连接Telnet服务器 tn = telnetlib.Telnet(Host, port=23, timeout=10) tn.set_debuglevel(2) # 输入登录用户名 tn.read_until('ENTER USERNAME < ') tn.write(username

Zabbix远程执行命令

原文发表于cu:2016-06-14 Zabbix触发器(trigger)达到阀值后会有动作(action)执行:发送告警信息或执行远程命令. 本文主要配置验证zabbix执行远程命令. 一.环境 Server:基于CentOS-7-x86_64-1511: Zabbix:zabbix-3.0.1server/agent. 二.注意事项 一些能想到的比较重要的注意事项: 远程执行命令是server端向agent端执行,不支持主动模式的agent: 不支持代理模式: zabbix用户必须对命令具有

(转载)Python IDLE reload(sys)后无法正常执行命令的原因

通常大多数人执行reload(sys)这条语句其实仅仅是为了能够修改Python的默认字符集,也就是能够调用sys.setdefaultencoding().但是如果在IDLE中执行reload(sys),就会导致接下来无法正常执行任何命令. 起初遇到这个问题也是束手无策,后来无意间在stackoverflow上看到有人说到了这个问题.原来是因为IDLE作为一个GUI Shell环境,在启动初始化过程中,会设置特定的标准输入.标准输出和标准错误输出,使得输入和输出都在IDLE的GUI Shell

awk,systemctl,破解7root口令

awk -F 指明输入时用到的字段分隔符 默认空格为分隔符 -v 自定义变量 基本格式:awk [options] 'program' file $1,$2..$n称为域标识,$0为所有域. 文件的每一行称为记录 awk '{print}' /etc/passwd 默认 print $0 显示全段 awk 'BEGIN{print "hello,awd"}' awk '{print "hello,awd"}' 支持输入 df |awk '{print $5}' df

Tomcat、Weblogic、JBoss、GlassFish、Resin、Websphere弱口令及拿webshell方法总结 [复制链接]

1.java应用服务器    Java应用服务器主要为应用程序提供运行环境,为组件提供服务.Java 的应用服务器很多,从功能上分为两类:JSP 服务器和 Java EE 服务器.1.1  常见的Server概述    常见的Java服务器:Tomcat.Weblogic.JBoss.GlassFish.Jetty.Resin.IBM Websphere.Bejy Tiger.Geronimo.Jonas.Jrun.Orion.TongWeb.BES Application Server.Col