破绽描绘
该破绽为经过配置了 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`:
从Cookie中提取`COOKIE_NAME`,然后停止base64解码。
将字符串转换为Json对象,然后完成`$_SESSION`赋值。
Zabbix定义了一个继承于`CCookieSession`的子类`CEncryptedCookieSession`来处置Cookie数据:
经过函数`checkSign`停止处置:
增加了加密过程,这样就能够保证数据不会被修正。经过剖析发现函数`checkSign`只是在考证`sessionid`时才会被调用:
也就是说其他的key将不会停止加密处置,我们能够在前端恳求中随意定义。
破绽剖析
Zabbix经过SSO SAML方式停止认证时,处置代码位于`index_sso.php`中,定位第231行:
首先尝试读取`saml_data`(从前面剖析可知,`saml_data`不会停止加密处置,所以在客户端能够伪造)。假如存在`saml_data`,直接提取`username_attribute`停止考证:
依据`$username`提取用户信息。后面用`CWebUser::$data['sessionid']`对`$_SESSION`赋值,最后绕过了认证,直接跳转进入Zabbix后台:
破绽复现
fofa
app="ZABBIX-监控系统" && body="saml"
破绽应用
首先访问Zabbix首页,提取Cookie并停止base64解码:
回忆前面剖析,我们参加`username_attribute`,将其赋值为`Admin`(Zabbix内置的管理员称号):
{"saml_data": {"username_attribute": "Admin"}, "sessionid": "***", "sign": "***"}
经过base64编码后结构新的Cookie,发送SSO SAM认证L恳求并截断抓包,修正Cookie:
触发断点
直接绕过认证,劫持管理员身份进入Zabbix后台
脚本cve-2022-23131 zabbix-saml-bypass-exp
将 [zbx_signed_session] 交换为 [cookie]
运用单点登录 (SAML) 登录
POC
https://github.com/Mr-xn/cve-2022-23131
处理计划
暂时修复倡议
假如目前无法晋级,若业务环境允许,运用白名单限制web端口的访问来降低风险或者禁用 SAML 身份考证。
通用修复倡议
官方已发布平安版本,请及时下载更新,下载地址:https://www.zabbix.com/cn/download
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
![头像](/wp-content/themes/zibll/img/avatar-default.png)