Zabbix安全:破解弱口令后执行命令,获取shell
2015-03-17 20:05
246 查看
如果你的Zabbix的Admin口令太弱或者使用了默认口令(Admin/zabbix),而被黑客破解了口令的话,Zabbix服务器在黑客面前就已经毫无抵抗力了。黑客可以创建“system.run[command,<mode>]”监控项执行命令,甚至获取服务器shell,获取root权限。
先介绍下“system.run[command,<mode>]”,这个监控项是agent自带的,使zabbix server可以远程在agent的机器上执行任意命令。方法有二:一是建立监控项,二是通过zabbix_get命令直接远程调用。使agent启用这个监控项要在配置文件里设置EnableRemoteCommands=1。命令执行权限限制于zabbix
agent的启动用户,如果你为了方便,把agent的启动用户设置为root的话(AllowRoot=1),这是非常危险的。
![](http://s3.51cto.com/wyfs02/M02/5A/35/wKiom1T5aq-jkcptAAJ65jNc1XY524.jpg)
下面模拟一个场景,展示黑客在获取Zabbix Admin口令的情况下,如何获取服务器的shell,甚至root权限:
这里利用NetCat(nc)命令打开shell,如果你的系统是RedHat/CentOS系列,nc可以通过yum下载到。
选择【Administration】->【Scripts】,创建一个script,如下图:
![](http://s3.51cto.com/wyfs02/M00/5A/32/wKioL1T5cdrC573JAALmIjFxlAw432.jpg)
“Execute on”选择Zabbix server,“Commands”里输入:
上面的意思是打开一个shell,监听2222端口。
进入【Dashboard】界面,在下面随便点击一个Host,会弹出一个“Scripts”选项卡,点击上面创建的“create shell”,这样上面的命令就会被执行。
![](http://s3.51cto.com/wyfs02/M00/5A/36/wKiom1T5dADzBUAUAAKxQEV-E3M782.jpg)
到zabbix server服务器上可以看到2222号端口已经在监听了。
![](http://s3.51cto.com/wyfs02/M00/5A/36/wKiom1T5dmzRWShWAAF-AanTyDg021.jpg)
下面我们在自己的机器上,用nc命令连接到server的shell:
![](http://s3.51cto.com/wyfs02/M02/5A/36/wKiom1T5d_rwb1P9AAHHTfsOifc478.jpg)
上图显示我们成功获取了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
先介绍下“system.run[command,<mode>]”,这个监控项是agent自带的,使zabbix server可以远程在agent的机器上执行任意命令。方法有二:一是建立监控项,二是通过zabbix_get命令直接远程调用。使agent启用这个监控项要在配置文件里设置EnableRemoteCommands=1。命令执行权限限制于zabbix
agent的启动用户,如果你为了方便,把agent的启动用户设置为root的话(AllowRoot=1),这是非常危险的。
![](http://s3.51cto.com/wyfs02/M02/5A/35/wKiom1T5aq-jkcptAAJ65jNc1XY524.jpg)
下面模拟一个场景,展示黑客在获取Zabbix Admin口令的情况下,如何获取服务器的shell,甚至root权限:
这里利用NetCat(nc)命令打开shell,如果你的系统是RedHat/CentOS系列,nc可以通过yum下载到。
选择【Administration】->【Scripts】,创建一个script,如下图:
![](http://s3.51cto.com/wyfs02/M00/5A/32/wKioL1T5cdrC573JAALmIjFxlAw432.jpg)
“Execute on”选择Zabbix server,“Commands”里输入:
进入【Dashboard】界面,在下面随便点击一个Host,会弹出一个“Scripts”选项卡,点击上面创建的“create shell”,这样上面的命令就会被执行。
![](http://s3.51cto.com/wyfs02/M00/5A/36/wKiom1T5dADzBUAUAAKxQEV-E3M782.jpg)
到zabbix server服务器上可以看到2222号端口已经在监听了。
![](http://s3.51cto.com/wyfs02/M00/5A/36/wKiom1T5dmzRWShWAAF-AanTyDg021.jpg)
下面我们在自己的机器上,用nc命令连接到server的shell:
![](http://s3.51cto.com/wyfs02/M02/5A/36/wKiom1T5d_rwb1P9AAHHTfsOifc478.jpg)
上图显示我们成功获取了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
相关文章推荐
- Zabbix安全:破解弱口令后执行命令,获取shell
- java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值
- Java开发之调用shell命令并获取执行结果(Mac)
- python 执行shell命令无法获取返回值的解决方法
- 获取python执行shell命令的结果
- 使用Java代码执行系统命令/shell命令, 并获取输出结果
- java调用shell命令并获取执行结果
- java调用shell命令并获取执行结果
- 程序内执行shell命令自动获取局域网内所有在线IP和开放端口(Linux)
- Linux中用C语言执行shell命令并获取返回结果
- shell 获取当前时间后根据时间取余数执行命令
- java调用shell命令并获取执行结果
- java 执行shell命令,并获取执行结果
- 服务端用system()执行shell命令获取执行结果(排除signal影响)
- Linux C 执行shell命令并获取返回结果
- java调用shell命令并获取执行结果的示例
- java调用shell命令并获取执行结果
- java执行shell命令 获取ip配置信息
- php 执行linux命令,shell脚本函数,获取服务器运行状态值
- java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值(如果有的话)