1. 程式人生 > >何查找網站漏洞文件任意查看漏洞詳情與利用

何查找網站漏洞文件任意查看漏洞詳情與利用

url post方式 權限 之前 工具 url編碼 編輯 系統 需要

在對網站程序代碼的安全檢測當中,網站文件任意查看漏洞在整個網站安全報告中屬於比較高危的網站漏洞,一般網站裏都會含有這種漏洞,尤其平臺,商城,交互類的網站較多一些,像普通權限繞過漏洞,導致的就是可以查看到網站裏的任何一個文件,甚至可以查看到網站的配置文件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狀態。

何查找網站漏洞文件任意查看漏洞詳情與利用