常見的Web源碼泄漏漏洞及其利用

Web源碼泄露的漏洞:

  • git源碼泄露
  • svn源碼泄露
  • hg源碼泄漏
  • 網站備份壓縮文件
  • WEB-INF/web.xml 泄露
  • DS_Store 文件泄露
  • SWP 文件泄露
  • CVS泄露
  • Bzr泄露
  • GitHub源碼泄漏

1、git 源碼泄露

Git是一個開源的分佈式版本控制系統,在執行git init初始化目錄的時候,會在當前目錄下自動創建一個.git目錄,用來記錄代碼的變更記錄等。發佈代碼的時候,如果沒有把.git這個目錄刪除,就直接發佈到了服務器上,攻擊者就可以通過它來恢復源代碼。

漏洞利用工具:GitHack

github項目地址:https://github.com/lijiejie/GitHack

用法示例:

GitHack.py http://www.openssl.org/.git/

修復建議:刪除.git目錄或者修改中間件配置進行對.git隱藏文件夾的訪問。

2、SVN 源碼泄露

SVN是一個開放源代碼的版本控制系統。在使用SVN管理本地代碼過程中,會自動生成一個名為.svn的隱藏文件夾,其中包含重要的源代碼信息。網站管理員在發佈代碼時,沒有使用『導出』功能,而是直接複製代碼文件夾到WEB服務器上,這就使.svn隱藏文件夾被暴露於外網環境,可以利用.svn/entries文件,獲取到服務器源碼。

漏洞利用工具:Seay SVN漏洞利用工具

修復建議:刪除web目錄中所有.svn隱藏文件夾,開發人員在使用SVN時,嚴格使用導出功能,禁止直接複製代碼。

3、hg源碼泄漏

Mercurial 是一種輕量級分佈式版本控制系統,使用 hg init的時候會生成.hg。

漏洞利用工具:dvcs-ripper

github項目地址:https://github.com/kost/dvcs-ripper

用法示例:

rip-hg.pl -v -u http://www.example.com/.hg/

4、CVS泄露

CVS是一個C/S系統,多個開發人員通過一個中心版本控制系統來記錄文件版本,從而達到保證文件同步的目的。主要是針對 CVS/Root以及CVS/Entries目錄,直接就可以看到泄露的信息。

http://url/CVS/Root 返回根信息http://url/CVS/Entries 返回所有文件的結構

漏洞利用工具:dvcs-ripper

github項目地址:https://github.com/kost/dvcs-ripper.git

運行示例:

rip-cvs.pl -v -u http://www.example.com/CVS/

5、Bazaar/bzr泄露

bzr也是個版本控制工具, 雖然不是很熱門, 但它也是多平台支持, 並且有不錯的圖形界面。

運行示例:

rip-bzr.pl -v -u http://www.example.com/.bzr/

6、網站備份壓縮文件

管理員將網站源代碼備份在Web目錄下,攻擊者通過猜解文件路徑,下載備份文件,導致源代碼泄露。

常見的備份文件後綴:

  • .rar
  • .zip
  • .7z
  • .tar.gz
  • .bak
  • .txt
  • .old
  • .temp

漏洞利用工具:御劍

7、WEB-INF/web.xml 泄露

WEB-INF是Java的WEB應用的安全目錄,如果想在頁面中直接訪問其中的文件,必須通過web.xml文件對要訪問的文件進行相應映射才能訪問。

WEB-INF主要包含一下文件或目錄:

WEB-INF/web.xml : Web應用程序配置文件, 描述了servlet和其他的應用組件配置及命名規則.WEB-INF/database.properties : 數據庫配置文件WEB-INF/classes/ : 一般用來存放Java類文件(.class)WEB-INF/lib/ : 用來存放打包好的庫(.jar)WEB-INF/src/ : 用來放源代碼(.asp和.php等)

通過找到 web.xml 文件,推斷 class 文件的路徑,最後直接 class 文件,再通過反編譯 class 文件,得到網站源碼。

8、DS_Store 文件泄露

.DS_Store是Mac下Finder用來保存如何展示 文件/文件夾 的數據文件,每個文件夾下對應一個。如果將.DS_Store上傳部署到服務器,可能造成文件目錄結構泄漏,特別是備份文件、源代碼文件。

漏洞利用工具:

github項目地址:https://github.com/lijiejie/ds_store_exp

用法示例:

ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store

9、SWP 文件泄露

swp即swap文件,在編輯文件時產生的臨時文件,它是隱藏文件,如果程序正常退出,臨時文件自動刪除,如果意外退出就會保留,文件名為 .filename.swp。

漏洞利用:直接訪問.swp文件,下載回來後刪掉末尾的.swp,獲得源碼文件。

10、GitHub源碼泄漏

GitHub是一個面向開源及私有軟件項目的託管平台,很多人喜歡把自己的代碼上傳到平台託管。攻擊者通過關鍵詞進行搜索,可以找到關於目標站點的敏感信息,甚至可以下載網站源碼。

類似的代碼託管平台還有很多,人才是最大的漏洞。

https://github.com/[email protected]&type=code

文由微信公眾號bypass