備份文件:被低估的Web威脅

早在2016年8月13日,作者就已經討論過備份文件漏洞(Backup-File Artifacts),這是一種比較罕見的攻擊方式,可以獲取到web伺服器。在上篇文章末尾,作者有公開該漏洞的檢測工具BFAC。這篇文章中,我們將詳細討論下備份文件(BFAs),以及這個漏洞是怎麼觸發的,怎麼利用的。

備份文件是用戶在備份過程中產生的一個文件。在這裡,離線備份的情況就不討論了,因為他並不影響web站點的安全。

很多開發人員在編輯文件前,都會先進行一次備份,同時會把備份文件和源文件放在伺服器上的同一個地方。這樣的話,如果存在繞過身份驗證,就可以直接下載到這個備份文件,從而得到網站源代碼。

1. 代碼編輯器產生的備份文件

文本編輯器和代碼編輯器通常對正在編輯的文件會事先產生一個備份文件,這樣做的目的是讓出問題後可以恢復文件。這類備份文件通常和原文件在同一個目錄下,而且文件的命名也和原文件類似。

例如:對一個名為index.php的文件進行編輯,自動創建的備份文件將會被命名成「index.php.save」。其他的代碼編輯器也是一樣的,都有一套自己的備份規則。

如果這些備份文件在網站目錄下,攻擊者就能通過暴力猜解找到備份文件。雖然index.php.sava並不能像index.php那樣解析成頁面,但是index.php.save的源代碼將會通過響應包返回。

2. 沒有刪除版本控制系統(VCS)產生的備份文件

現如今,版本控制系統(VCS)非常流行。幾乎所有的VCS都會在工程目錄下建一個meta目錄,這個文件記錄了整個項目工程每次修改的記錄。

而開發者修改項目倉庫的時候就直接下載/克隆代碼倉庫,改為後直接上傳到web伺服器上。但是很多時候,VCS產生的目錄並沒有刪除掉,這樣的話,如果被攻擊者找到,將會使整個工程泄露。

3. 沒有刪除開發人員手動備份的文件

那些沒有用版本控制系統的開發人員在修改項目文件的時候,通常會手動備份這個文件。通常,這些開發者也是用相似的模式命名這些備份文件。這樣的話,文件名就很容易被猜到。

例如,一個開發者要編輯index.php文件,為了避免修改後出現問題,那麼他首先會複製該文件。複製品的命名也差不多是能讓了關聯到這個原文件。

index.php→ index.php.baknindex.php→ index.oldnindex.php→ index.php.tempn

由於手動備份的文件名很容易被猜到,前面說的威脅當然也存在於這裡,導致項目代碼泄露。

如果一個安全研究員和滲透測試員只是依賴於web漏洞掃描器的腳本小子,那他在現實中可能很少遇到這種情況。因為大多數web漏洞掃描器並不會測試網站上的備份文件。同樣,目前測試備份文件的攻擊也比較少。

幾款主流掃描器中是否存在備份文件測試:

OWASP ZAP 2.4nVeganW3AF --- 有些擴展插件可以測試到備份文件,但是默認是沒有的nNikto 2.4.6nBurp Suit Professional 1.7.Xn

注意:以上幾款我都測試過,最新版本的都沒有提供備份文件

基本上可以做備份文件掃描的web漏洞掃描器很少,不過這些掃描器對基礎的備份文件測試還是有一些的。但是這些都太過於簡單,很容易漏報和錯報。因此,我寫了個掃描器BFAC。

BFAC(備份文件檢測工具)是一款自動化工具,可以檢測wen站點中可能有威脅的備份文件。BFAC是集多種檢測手法於一身的備份文件黑盒測試。

產品特性:

1. 測試所有類型備份文件的類型,包括手工備份,以及編輯器備份n2. 對主流VCS備份文件進行測試,例如git,svn,mercurial以及bazaarn3. 智能檢測技術:檢測頁面中的「Not Found」,以及使用不同方法檢測存在頁面n4. 隱秘的與web伺服器交互n5. 通過編輯很容易定製化添加命名模式n6. 通用性n

如何保護網站?

系統管理員需定期檢測系統中的備份文件,發現問題要及時通知開發人員,並且修復。如果不需要的話,與開發人員協商刪除這些文件。

開發人員修改文件後,要記得檢查備份文件,把web站點中的備份文件及時刪除

滲透測試人員把備份文件測試加入你的測試列表,當然,你可以用BFAC來測試。

註:本文參考來源於mazinahmed

推薦閱讀:

TAG:服务器安全 | 数据安全 |