【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现

渗透技巧 2年前 (2022) admin
1,050 0 0

关注公众号回复“漏洞”获取研究环境或工具

漏洞信息


Zabbix是全球流行的企业级开源监控解决方案。最近Zabbix官网爆出一则漏洞CVE-2022-23131:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


Zabbix对客户端提交的Cookie会话存在不安全的存储方式,导致在启动SAML SSO认证模式的前提下,恶意用户可通过构造特殊请求绕过认证,获取管理员权限,进而可实现RCE。影响版本:


  • 5.4.0 – 5.4.8

  • 6.0.0alpha1


环境搭建


可以采用源码方式安装Zabbix。在安装LAMP和Xdebug后,下载漏洞版本的Zabbix:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


参考官网教材完成Zabbix安装:


Zabbix安装

https://www.zabbix.com/documentation/5.0/zh/manual/installation/install


然后需要配置SAML SSO服务器,可以通过开源的Keycloak来完成,参考如下:


Keycloak SAML SSO

https://www.techrunnr.com/how-to-integrate-keycloak-with-zabbix-for-sso-saml/


登录Zabbix后台进行配置:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


最后效果:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


会话机制分析


在分析漏洞之前,我们首先对Zabbix处理`$_COOKIE`与`$_SESSION`映射关系的代码进行简要分析。处理基类为`CCookieSession`:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


从Cookie中提取`COOKIE_NAME`,然后进行base64解码。


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


将字符串转换为Json对象,然后完成`$_SESSION`赋值。


Zabbix定义了一个继承于`CCookieSession`的子类`CEncryptedCookieSession`来处理Cookie数据:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


通过函数`checkSign`进行处理:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


增加了加密过程,这样就可以保证数据不会被修改。通过分析发现函数`checkSign`只是在验证`sessionid`时才会被调用:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


也就是说其他的key将不会进行加密处理,我们可以在前端请求中随意定义。

漏洞分析


Zabbix通过SSO SAML方式进行认证时,处理代码位于`index_sso.php`中,定位第231行:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


首先尝试读取`saml_data`(从前面分析可知,`saml_data`不会进行加密处理,所以在客户端可以伪造)。如果存在`saml_data`,直接提取`username_attribute`进行验证:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


根据`$username`提取用户信息。后面用`CWebUser::$data[‘sessionid’]`对`$_SESSION`赋值,最后绕过了认证,直接跳转进入Zabbix后台:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


漏洞复现


首先访问Zabbix首页,提取Cookie并进行base64解码:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


回顾前面分析,我们加入`username_attribute`,将其赋值为`Admin`(Zabbix内置的管理员名称):


{"saml_data": {"username_attribute": "Admin"}, "sessionid": "***", "sign": "***"}


经过base64编码后构造新的Cookie,发送SSO SAM认证L请求并截断抓包,修改Cookie:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


触发断点:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现


直接绕过认证,劫持管理员身份进入Zabbix后台:


【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



点关注,不迷路!

【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现

关注公众号回复“漏洞”获取研究环境或工具

原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现

版权声明:admin 发表于 2022年2月21日 上午12:12。
转载请注明:【最新漏洞预警】CVE-2022-23131 Zabbix SAML SSO认证绕过漏洞分析与复现 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...