天天看點

網站漏洞修複網站檔案任意檢視漏洞詳情與利用

在對網站程式代碼的安全檢測當中,網站檔案任意檢視漏洞在整個網站安全報告中屬于比較高危的網站漏洞,一般網站裡都會含有這種漏洞,尤其平台,商城,互動類的網站較多一些,像普通權限繞過漏洞,導緻的就是可以檢視到網站裡的任何一個檔案,甚至可以檢視到網站的配置檔案config.php conn.php等等。

我們SINE安全公司在對gitea開源程式代碼進行網站安全檢測的時候發現存在網站檔案任意檢視漏洞,沒有授權的任意一個使用者的賬号都可以越權建立gitea的lfs對象,這個對象通俗來講就是可以利用gitea代碼裡寫好的第三方api借口,進行通路,可以實作如下功能:讀取檔案,上傳檔案,列目錄等等的一些讀寫分離操作。其中API李的oid是gitea對象的一個值,這個值是用的哈希,在前端輸入的過程中并沒有對其進行ID值的判斷與安全過濾,導緻可以插入任意的字元傳入到伺服器的後端中去,導緻可以執行檢視檔案的漏洞。我們來現場還原下網站漏洞的利用:

首先POST資料過去,POST到的位址為 /vulhub檔案夾下的repo.git目錄/info/lfs/objects檔案。

如下圖:

網站漏洞修複網站檔案任意檢視漏洞詳情與利用

我們POST資料過去的時候就可以在OID這個值裡插入一些可以檢視網站檔案的代碼,但是這個漏洞是需要有前提條件的,就是gitea預設開啟公開通路,然後在建立gitea對象的時候,才會産生繞過權限檢視檔案的漏洞,為什麼說要公開通路,是因為公開以後,之前建立的gitea對象才會生效,緊接着檢查目前使用者是否有權限通路LFS對象。我們看到我們POST發送資料過去以後,傳回來的資料包是200狀态,也就是發送成功,gitea對象已經成功建立了,我們POST資料裡寫的oid=值是....../../../etc/passwd,這個代碼的意思就是檢視系統根目錄下的etc檔案夾下的linux 使用者密碼檔案。

網站漏洞修複網站檔案任意檢視漏洞詳情與利用

接下來我們就要檢視這個/etc/passwd檔案裡的内容了,該如何檢視這個密碼檔案呢? 我們用get的方式進行送出,我們編輯一下網址:

/vulhub/repo.git/info/lfs/objects/ [....../../../etc/passwd]/sth,然後打開chinaz的url編碼工具進行編碼一下,就可以了,我們get送出通路的時候就檢視到了/etc/passwd檔案的内容。

網站漏洞修複網站檔案任意檢視漏洞詳情與利用

那麼該網站漏洞是如何産生的呢?

我們來看下gitea的程式源代碼,發現代碼裡的meta.oid值是調用的transformKey函數,這個函數的作用就是将oid的值轉換成了其他的編碼方式,導緻字元裡内容可以随意寫入,沒有長度限制,文字限制,當我們POST把oid值改為....../../../etc/passwd的時候就可以直接調取了這個檔案并讀取出來。

網站漏洞修複建議:

盡快更新gitea的版本,并做好網站安全加強,POST資料包進行安全過濾,有條件的話請部署get post防火牆,對get post方式送出的資料進行安全過濾,當發現檢視系統檔案的時候,比如:/etc/passwd請直接過濾攔截,并傳回301狀态。

繼續閱讀