Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

admin 2022年3月30日20:07:30评论123 views字数 907阅读3分1秒阅读模式

Zabbix 是全球流行的企业级开源监控解决方案。


CVE-2022-23131 的根本原因是 index_sso.php 中 session 获取逻辑存在问题,只要校验到 Cookie 中 username_attribute 存在直接就给 sessionid 赋值,因此可以使用默认管理员 Admin 绕过认证直接登录后台进而 getshell。


浅析

zabbix 处理 cookie 与 session 映射关系的 CCookieSession 类,实现了 SessionHandlerInterface 接口。

变量 ZBX_SESSION_NAME 就是直接从 Cookie 中获得的 zbx_session。

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

Cookie:Base64 解码 -> json 解码

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

再进入 CSessionHelper 类给 session 赋值

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析


而 zabbix 对于伪造 session 问题,使用 CCookieSession 类的子类 CEncryptedCookieSession 实现,CEncryptedCookieSession 类中重写了 extractSessionId() 方法。

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

增加了 checkSign() 方法进行加密,防止数据被修改

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

因此,思路就是 绕过 CEncryptedCookieSession 类中 checkSign() 方法的调用,直接使用 CCookieSession 类处理 cookie 到 session 的转化即可。


再看到 index_sso.php

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

直接从 saml_data 中取 username_attribute,然后查库,若用户存在,创建 session,最后 sessionid 赋值。也就是在用户存在的条件下可以直接得到登录 session。


构造 payload 如下

Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

可见成功跳转后台。


后记

登录后台,以往的想要 getshell 通用的做法是新建一个 Script,再去 Host 页面调用对应的 Script,但是笔者使用 zabbix 5.4.8 版本复现时发现,新建 Script 再进行 Host 调用这种方式 zabbix 官方已经修补了:),而绕过方式也很简单,相信经验丰富的你一看便知。



原文始发于微信公众号(Craft Security Group):Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月30日20:07:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Zabbix SAML SSO 认证绕过漏洞(CVE-2022-23131) 分析http://cn-sec.com/archives/854183.html

发表评论

匿名网友 填写信息