0x01 漏洞描述
安全断言标记语言 (SAML) 是最常见的单点登录 (SSO) 标准之一。围绕 XML 实现,它允许身份提供者(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 上对用户进行身份验证。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)
);
0x04 漏洞利用
漏洞利用很简单,特别是因为Zabbix Web 前端自动配置了一个名为Admin的高权限用户。
fofa:app="ZABBIX-监控系统" && body="saml"
一旦在仪表板上被认证为管理员,攻击者可以在任何附加的Zabbix Server上执行任意命令,如果在配置中明确允许AllowKey=system.run[*]
(非默认) ,则可以在Zabbix Agents
上执行。
第一步:replace [zbx_signed_session] to [cookie]
将session替换为cookie
第二部:sign in with Single Sign-On (SAML)
点击SAML
登录
绕过登录进入后台
0x05 exp获取
关注公众号后台回复“CVE-2022-23131”
学习网络必须关注的公众号推荐
★
免责声明由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
”
end
网络¥安全联盟站—李白你好
欢迎关注[李白你好]-文章内容涉及网络¥安全,web渗透测试、内网安全、二进制安全、工业控制安全、APP逆向、CTF、SRC等。
微信:libaisec
微信交流群:加我微信拉你进群和工程师们学技术聊人生
原文始发于微信公众号(李白你好):CVE-2022-23131——绕过 SAML SSO 身份验证
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论