CVE-2022-23131 Zabbix Web Frontend Bypassing the SAML SSO Authentication
目录
警告
本文最后更新于 2022-02-22,文中内容可能已过时。
# 环境搭建
- https://cdn.zabbix.com/zabbix/appliances/stable/5.4/5.4.8/zabbix_appliance-5.4.8-vmx.tar.gz zabbix5.4的虚拟机
- https://github.com/catsAND/zabbix-saml 配置saml sso登录
# 漏洞分析
漏洞产生的根本原因是因为混用了cookie和session。
先看几行对于cookie和session处理的类。
CCookieSession实现SessionHandlerInterface接口,接管了php对于session的处理,用cookie进行包装。
其中读取session时是使用CCookieHelper
从cookie中base64回来拿到session
zabbix对于伪造session的处理是另一个类CEncryptedCookieSession,他继承了CCookieSession
重写了CCookieSession的extractSessionId函数,加了一个checkSign的函数。
那么只要不调用CEncryptedCookieSession的extractSessionId函数,或者干脆不用CEncryptedCookieSession而找使用CCookieSession管理session的地方就可以伪造了。
此时再来看index_sso.php
直接从session也就是cookie中取出saml_data中的username_attribute,如果查到了用户名,则set一个sessionid,造成绕过鉴权。
sonarsource的漏洞演示中使用了两次登录,套用了原来的sessionid和sign参数,其实不设置这两个参数也可以。
|
|
# 后利用
zabbix在一些特定的配置下可以控agent,这些参考Wfox的 Zabbix 攻击面挖掘与利用
# 参考
- https://cdn.zabbix.com/zabbix/appliances/stable/5.4/5.4.8/zabbix_appliance-5.4.8-vmx.tar.gz zabbix5.4的虚拟机
- https://github.com/catsAND/zabbix-saml 配置saml sso登录
- https://github.com/0tt7/CVE-2022-23131
- https://www.php.net/manual/en/class.sessionhandlerinterface.php
文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。

如果你觉得这篇文章对你有所帮助,欢迎赞赏或关注微信公众号~


