溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Gogs任意用戶登錄漏洞實(shí)例分析

發(fā)布時(shí)間:2022-01-17 17:18:40 來源:億速云 閱讀:196 作者:柒染 欄目:網(wǎng)絡(luò)管理

這篇文章主要為大家分析了Gogs任意用戶登錄漏洞實(shí)例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學(xué)習(xí)“Gogs任意用戶登錄漏洞實(shí)例分析”的知識(shí)吧。

一、    漏洞背景

Gogs 是一款類似GitHub的開源文件/代碼管理系統(tǒng)(基于Git),Gogs 的目標(biāo)是打造一個(gè)最簡(jiǎn)單、最快速和最輕松的方式搭建自助 Git 服務(wù)。使用 Go 語言開發(fā)使得 Gogs 能夠通過獨(dú)立的二進(jìn)制分發(fā),并且支持 Go 語言支持的 所有平臺(tái),包括 Linux、Mac OS X、Windows 以及 ARM 平臺(tái)。

二、    漏洞描述

gogs是一款極易搭建的自助Git服務(wù)平臺(tái),具有易安裝、跨平臺(tái)、輕量級(jí)等特點(diǎn),使用者眾多。其0.11.66及以前版本中,(go-macaron/session庫)沒有對(duì)sessionid進(jìn)行校驗(yàn),攻擊者利用惡意sessionid即可讀取任意文件,通過控制文件內(nèi)容來控制session內(nèi)容,進(jìn)而登錄任意賬戶。

三、    影響版本

影響版本如下:

Gogs 0.11.66及之前的版本

四、    漏洞復(fù)現(xiàn)

(1)    利用ubuntu虛擬機(jī)docker克隆vulhub上gogs環(huán)境

(2)    執(zhí)行如下命令啟動(dòng)gogs:docker-compose up -d

(3)    環(huán)境啟動(dòng)后,訪問http://192.168.49.103:3000/install,即可看到安裝頁面。安裝時(shí)選擇sqlite數(shù)據(jù)庫,并開啟注冊(cè)功能。

 Gogs任意用戶登錄漏洞實(shí)例分析

 Gogs任意用戶登錄漏洞實(shí)例分析

(4)使用Gob序列化生成session文件data。

(5)然后注冊(cè)一個(gè)普通用戶賬戶,創(chuàng)建項(xiàng)目,并在“版本發(fā)布”頁面上傳剛生成的session文件。

 Gogs任意用戶登錄漏洞實(shí)例分析

(6)通過這個(gè)附件的URL,得知這個(gè)文件的文件名:./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10。然后,構(gòu)造Cookie:i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10,訪問即可發(fā)現(xiàn)已經(jīng)成功登錄id=1的用戶(即root管理員)

 Gogs任意用戶登錄漏洞實(shí)例分析

五、    漏洞分析利用

首先, 對(duì)于每個(gè)用戶, 我們都可以創(chuàng)建倉庫, 通過release功能可以上傳任意內(nèi)容可控的文件, 從而為我們偽造session文件提供了條件.

通過explore功能, 我們能找到很多用戶的倉庫, 進(jìn)入某用戶的用戶資料頁面, 我們可以得到構(gòu)造該用戶session的所有需要的資料(uid, username).

 Gogs任意用戶登錄漏洞實(shí)例分析

通過上方file.go的代碼, 我們發(fā)現(xiàn), session文件的內(nèi)容為Gob編碼方式, 借鑒P牛寫的生成session的payload。

 Gogs任意用戶登錄漏洞實(shí)例分析

由此, 我們可以生成一段session, 通過每個(gè)用戶均可使用的release上傳功能, 我們將我們偽造的session上傳至服務(wù)器。

默認(rèn)配置的gogs,release中文件存放的目錄結(jié)構(gòu)是attachments/fid[0]/fid[1]/fid。session存放的目錄結(jié)構(gòu)是sessions/sid[0]/sid[1]/sid。此外sessions與attachments文件夾均存放在相同的data文件夾下。

 Gogs任意用戶登錄漏洞實(shí)例分析

因?yàn)間ogs會(huì)將session分段, 構(gòu)造成最終的路徑后再進(jìn)行讀取, 而attachments與session在同一文件夾下, 修改session為我們剛剛上傳的文件的路徑, 即../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b, 讀取session的函數(shù)將路徑解析為sessions/././../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b也就是我們上傳的那個(gè)文件, 最終完成任意用戶登陸。

六、    修復(fù)建議

Gogs可至Github下載編譯develop分支,在該分支中此漏洞已經(jīng)修復(fù),或者升級(jí)至最新版本的Gogs。

關(guān)于“Gogs任意用戶登錄漏洞實(shí)例分析”就介紹到這了,更多相關(guān)內(nèi)容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請(qǐng)多多支持億速云網(wǎng)站!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI