前言
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
本文章中的漏洞均为公开的漏洞收集,如果文章中的漏洞出现敏感内容产生了部分影响,请及时联系作者,望谅解。
一、漏洞原理
本次复现漏洞为 CVE-2022-23131,该漏洞是由于Zabbix Web Frontend允许用户通过 SAML 进行身份验证, 其中ui/index_sso.php导致会话条目的值saml_data[username_attribute]
可以由客户端完全控制。
Zabbix相关组件分析监控平台
Zabbix通常部署在具有四个不同组件的基础架构上:
(1)Zabbix Agent:在所有受监控节点上运行的服务,在Zabbix Server发送请求时收集信息;
(2)Zabbix Server:它连接到Zabbix Agents以收集监控数据,并在达到配置阈值时发出警报;
(3)Zabbix Proxy:将单个Zabbix Server关联到数百个Zabbix Agents可能非常昂贵,并且很难部署在某些网络拓扑中。Zabbix Proxy实体旨在整合整个区域的数据,并将收集的数据报告给主Zabbix Server;
(4)Zabbix Web Frontend:**Zabbix Server的接口,通过TCP和共享数据库进行通信。系统管理员使用此网站主页来访问收集的监控数据并配置Zabbix服务器(例如,列出主机,在Zabbix Agents上运行脚本)。
CVE-2022-23131 - 绕过 SAML SSO 身份验证
Security Assertion Markup Language (SAML) 是最常见的单点登录 (SSO) 标准之一。它围绕 XML 实现,它允许身份提供程序(IdP,能够对用户进行身份验证的实体)告诉服务提供商(SP,此处为Zabbix)您是谁。您可以配置Zabbix Web Frontend允许用户通过 SAML 进行身份验证,但默认情况下不启用该前端,因为它需要了解身份提供程序的详细信息。这是企业级部署中最常见的设置。
与 SAML 身份验证机制相关的代码可以在index_sso.php
中找到。简而言之,它的目标是:
- 将用户重定向到 IdP;
- 对用户进行身份验证后,验证传入 SAML 负载的格式和签名。创建名为
saml_data
的会话条目以记住用户的属性;
- 如果会话中存在名为
saml_data
的条目,请提取其值并根据username_attribute
的值对 Zabbix 上的用户进行身份验证。
如上一节所述,CEncryptedCookieSession::checkSign()
在此文件中从不调用,因此会话条目的值saml_data[username_attribute]
可以由客户端完全控制:
ui/index_sso.php
if (CSessionHelper::has('saml_data')) {
$saml_data = CSessionHelper::get('saml_data');
CWebUser::$data = API::getApiService('user')->loginByUsername($saml_data['username_attribute'],
(CAuthenticationHelper::get(CAuthenticationHelper::SAML_CASE_SENSITIVE) == ZBX_AUTH_CASE_SENSITIVE),
CAuthenticationHelper::get(CAuthenticationHelper::AUTHENTICATION_TYPE)
);
利用这一漏洞是简单明了的,特别是因为Zabbix Web Frontend自动配置了一个名为Admin
的高权限用户。
一旦在网页主页上被认证为管理员,攻击者就可以在任何连接的Zabbix服务器上执行任意命令,如果在配置中明确允许使用AllowKey=system.run[*]
(非默认值),则可以在Zabbix Agents上执行任意命令。
二、漏洞复现实战
FOFA收集存在SAML登录方式的ZABBIX监控系统的站点
图1 FOFA信息收集
见上图,我们随机选择第二个站点作为本次复现的target。
利用CVE-2022-23131漏洞EXP进行利用
链接:GitHub - L0ading-x/cve-2022-23131: cve-2022-23131
执行命令构造所需的Cookie
python3 zabbix.py target Admin
如:python3 cve-2022-23131.py 127.0.0.1 Admin
•target
为目标地址
•Admin
固定为管理员用户名
图2 CVE-2022-23131漏洞EXP利用
将生成的zbx_signed_session
替换到当前目标的cookie
中
图3 修改Cookie
点击登陆页面的sign in with Single Sign-On (SAML)
方式登陆
图4 SAML方式登陆
进入Zabbix后台
图5 成功进入Zabbix后台
结束语
本文主要介绍了CVE-2022-23131漏洞 Zabbix登录绕过漏洞的原理分析及复现过程,漏洞主要源于前端会话存储。