Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)

破绽描绘

该破绽为经过配置了 SAML 的 Zabbix 前端,不平安的客户端会话存储招致身份考证绕过/实例接收(CVE-2022-23131),Zabbix在启用了 SAML SSO 身份考证(非默许)的状况下,歹意执行组件能够修正会话数据,由于未考证会话中存储的用户登录名。未经身份考证的歹意参与者可能会应用此问题来提升权限并取得对Zabbix前端的管理员访问权限。要执行攻击,需求启用 SAML 身份考证,并且执行组件必需晓得 Zabbix 用户的用户名(或运用来宾帐户,默许状况下处于禁用状态)。
 


 

受影响版本

5.4.0 <= Zabbix <= 5.4.8
Zabbix 6.0.0alpha1

平安版本
Zabbix >= 5.4.9rc2
Zabbix >= 6.0.0beta1
Zabbix >= 6.0 (plan)
 


 

破绽剖析

会话机制剖析

在剖析破绽之前,我们首先对Zabbix处置`$_COOKIE`与`$_SESSION`映射关系的代码停止扼要剖析。处置基类为`CCookieSession`:

图片[1]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区
从Cookie中提取`COOKIE_NAME`,然后停止base64解码。

图片[2]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

将字符串转换为Json对象,然后完成`$_SESSION`赋值。
Zabbix定义了一个继承于`CCookieSession`的子类`CEncryptedCookieSession`来处置Cookie数据:

图片[3]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

经过函数`checkSign`停止处置:

图片[4]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

增加了加密过程,这样就能够保证数据不会被修正。经过剖析发现函数`checkSign`只是在考证`sessionid`时才会被调用:

图片[5]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

也就是说其他的key将不会停止加密处置,我们能够在前端恳求中随意定义。

 

破绽剖析

Zabbix经过SSO SAML方式停止认证时,处置代码位于`index_sso.php`中,定位第231行:

图片[6]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区
首先尝试读取`saml_data`(从前面剖析可知,`saml_data`不会停止加密处置,所以在客户端能够伪造)。假如存在`saml_data`,直接提取`username_attribute`停止考证:

图片[7]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

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

图片[8]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区
 


 

破绽复现

fofa

app="ZABBIX-监控系统" && body="saml" 

 

破绽应用

首先访问Zabbix首页,提取Cookie并停止base64解码:

图片[9]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区
图片[10]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

回忆前面剖析,我们参加`username_attribute`,将其赋值为`Admin`(Zabbix内置的管理员称号):

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

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

图片[11]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

触发断点

图片[12]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区
图片[13]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

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

图片[14]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

脚本cve-2022-23131 zabbix-saml-bypass-exp
将 [zbx_signed_session] 交换为 [cookie]
图片[15]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

运用单点登录 (SAML) 登录

图片[16]-Zabbix不安全的客户端会话存储导致身份验证绕过/实例接管 (CVE-2022-23131)-孤勇者社区

POC
https://github.com/Mr-xn/cve-2022-23131

 


 

处理计划

暂时修复倡议

假如目前无法晋级,若业务环境允许,运用白名单限制web端口的访问来降低风险或者禁用 SAML 身份考证。
 

通用修复倡议

官方已发布平安版本,请及时下载更新,下载地址:https://www.zabbix.com/cn/download
 

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片