0x01 漏洞描述: SAML SSO身份验证绕过漏洞
安全断言标记语言(SAML)是最为广泛采用的单点登录(SSO)标准之一。通过XML实现,SAML允许身份提供者(IdP,即能对用户进行身份验证的实体)向服务提供者(SP,在此为Zabbix)传递关于用户身份的信息。虽然Zabbix Web前端允许配置使用SAML进行用户身份验证,但默认情况下未启用该功能,因为它需要了解身份提供者的详细信息。这是企业部署中最为常见的设置。
在启用SAML SSO身份验证的情况下,存在一漏洞使得攻击者能够绕过身份验证并获得管理员权限。攻击者可以利用此权限在关联的Zabbix Server和Zabbix Agent实例上执行任意命令。
0x02 影响范围: 影响Zabbix Web前端版本:
- 5.4.8
- 5.0.18
- 4.0.36
0x03 漏洞分析: 与SAML身份验证机制相关的代码可以在index_sso.php
中找到。简而言之,其目标为:
- 将用户重定向到IdP。
- 用户通过身份验证后,验证传入的SAML有效负载的格式和签名。创建名为
saml_data
的会话条目以存储用户属性。 - 如果会话中存在名为
saml_data
的条目,则提取其值,并根据username_attribute
的值在Zabbix上对用户进行身份验证。
示例代码片段:
if (CSessionHelper::has('saml_data')) {<br>$saml_data = CSessionHelper::get('saml_data');<br>CWebUser::$data = API::getApiService('user')->loginByUsername($saml_data['username_attribute'],<br>(CAuthenticationHelper::get(CAuthenticationHelper::SAML_CASE_SENSITIVE) == ZBX_AUTH_CASE_SENSITIVE),<br>CAuthenticationHelper::get(CAuthenticationHelper::AUTHENTICATION_TYPE)<br>);
0x04 漏洞利用: 漏洞利用相对简单,尤其因为Zabbix Web前端已自动配置一个名为Admin的高权限用户。攻击者通过绕过身份验证成为管理员,从而在关联的Zabbix Server和Zabbix Agent实例上执行任意命令。
漏洞利用步骤:
- 将
[zbx_signed_session]
替换为[cookie]
。 - 单击”SAML登录”,绕过登录进入后台。
0x05 exp获取:
© 版权声明
THE END
暂无评论内容