关注公众号回复“漏洞”获取研究环境或工具
Zabbix是全球流行的企业级开源监控解决方案。接上文:
CVE-2022-23131
QCyber,公众号:且听安全【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现
下面分享Zabbix官网同时发布的另一个漏洞CVE-2022-23134,漏洞公告如下:
在安装Zabbix之后,`setup.php`文件的某些功能不仅可以由超级管理员访问,也可以被未授权的用户访问,最终可以接管后台,实现RCE。漏洞影响版本:
-
5.4.0 – 5.4.8
-
6.0.0 – 6.0.0beta1
该漏洞由`setup.php`文件中的某些功能存在未授权访问造成的。我们首先看下这个文件的具体代码,程序一开始就会调用`ZBase::authenticateUser`函数来处理用户的身份信息,如果未登录过,则被认证为`guest`用户:
这里同时调用了`CCookieSession::session_start`函数,会触发`CCookieSession::read`函数,因为`CCookieSession::__construct`中设置了`$_SESSION`的各种处理函数,这个先前的文章也说过了,可以参考:
CVE-2022-23131
QCyber,公众号:且听安全【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现
在处理`CCookieSession::read`函数的过程中,会把Cookie中`zbx_session`的值解密后逐个赋值到`$_SESSION`中。这样,我们就相当于可控整个`$_SESSION`变量了。继续往下,程序开始判断用户是否有权限访问`step6`。从注释中可看出,`step6`只允许被管理员和`Guest`用户访问。而这个`step`的值从`$_SESSION`中获取,从前面的分析可知,该值用户可控:
接着就开始执行`初始化安装Zabbix`相关代码,根据之前的`step`值调用不同函数。我们可以将`step`设置成 6,这样就会调用到`CSetupWizard::stage6`。在`CSetupWizard::stage6`中,我们需要关注`CSetupWizard::dbConnect`和`CConfigFile::save`这两个函数的调用:
`CSetupWizard::dbConnect`函数中,会从`$_SESSION`中获取数据库的账号密码,并尝试连接。如果目标Mysql可以 `LOAD DATA LOCAL`的话,我们还可以进行任意文件读取。而且这处还存在潜在的PHAR反序列化漏洞(当然,得有合适的链才能触发):
而`CConfigFile::save`函数,则将数据写进了Zabbix配置文件,这些数据均从`$_SESSION`中获取:
从上面分析可知,我们可以控制Zabbix的配置文件,将其指向恶意的Mysql数据库,以“管理员身份”登录 Zabbix 后台,进而实现RCE 。
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
关注公众号回复“漏洞”获取研究环境或工具
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-23134 Zabbix漏洞分析之二:从未授权访问到接管后台