1. 程式人生 > >CTF中常見Web源碼泄露總結

CTF中常見Web源碼泄露總結

tab source plain web目錄 安全策略 web-inf 本地文件 file style

目錄 00x1 .ng源碼泄露
00x2 git源碼泄露
00x3 .DS_Store文件泄漏
00x4 網站備份壓縮文件
00x5 SVN導致文件泄露
00x6 WEB-INF/web.xml泄露
00x7 CVS泄漏
工具推薦
參考

0x01 .hg源碼泄漏

漏洞成因:

  hg init的時候會生成.hg

<span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class
="pln">http</span><span class="pun">:</span><span class="com">//www.am0s.com/.hg/</span>

漏洞利用:

工具:dvcs-ripper

<span class="pln">rip</span><span class="pun">-</span><span class="pln">hg</span><span class="pun">.</span><span class
="pln">pl </span><span class="pun">-</span><span class="pln">v </span><span class="pun">-</span><span class="pln">u http</span><span class="pun">:</span><span class="com">//www.am0s.com/.hg/</span>

0x02 .git源碼泄漏

漏洞成因:

  在運行git init初始化代碼庫的時候,會在當前目錄下面產生一個.git的隱藏文件,用來記錄代碼的變更記錄等等。在發布代碼的時候,把.git這個目錄沒有刪除,直接發布了。使用這個文件,可以用來恢復源代碼.

PHP
<span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln"> http</span><span class="pun">:</span><span class="com">//www.am0s.com/.git/config</span>

漏洞利用:

工具:

GitHack

<span class="typ">GitHack</span><span class="pun">.</span><span class="pln">py http</span><span class="pun">:</span><span class="com">//www.am0s.com/.git/</span>

dvcs-ripper

<span class="pln">rip</span><span class="pun">-</span><span class="pln">git</span><span class="pun">.</span><span class="pln">pl </span><span class="pun">-</span><span class="pln">v </span><span class="pun">-</span><span class="pln">u http</span><span class="pun">:</span><span class="com">//www.am0s.com/.git/</span>

0x03 .DS_Store文件泄漏

漏洞成因:

  在發布代碼時未刪除文件夾中隱藏的.DS_store,被發現後,獲取了敏感的文件名等信息。

漏洞利用:

PHP
<span class="pln">http</span><span class="pun">:</span><span class="com">//www.am0s.com/.ds_store</span>

註意路徑檢查

工具:

dsstoreexp

PHP
<span class="pln">python ds_store_exp</span><span class="pun">.</span><span class="pln">p

0x04 網站備份壓縮文件

在網站的使用過程中,往往需要對網站中的文件進行修改、升級。此時就需要對網站整站或者其中某一頁面進行備份。當備份文件或者修改過程中的緩存文件因為各種原因而被留在網站web目錄下,而該目錄又沒有設置訪問權限時,便有可能導致備份文件或者編輯器的緩存文件被下載,導致敏感信息泄露,給服務器的安全埋下隱患。

漏洞成因及危害:

該漏洞的成因主要有以下兩種:

  1. 服務器管理員錯誤地將網站或者網頁的備份文件放置到服務器web目錄下。
  2. 編輯器在使用過程中自動保存的備份文件或者臨時文件因為各種原因沒有被刪除而保存在web目錄下。

漏洞檢測:

該漏洞往往會導致服務器整站源代碼或者部分頁面的源代碼被下載,利用。源代碼中所包含的各類敏感信息,如服務器數據庫連接信息,服務器配置信息等會因此而泄露,造成巨大的損失。被泄露的源代碼還可能會被用於代碼審計,進一步利用而對整個系統的安全埋下隱患。

<span class="pun">.</span><span class="pln">rar
</span><span class="pun">.</span><span class="pln">zip
</span><span class="pun">.</span><span class="lit">7z</span>
<span class="pun">.</span><span class="pln">tar</span><span class="pun">.</span><span class="pln">gz
</span><span class="pun">.</span><span class="pln">bak
</span><span class="pun">.</span><span class="pln">swp
</span><span class="pun">.</span><span class="pln">txt
</span><span class="pun">.</span><span class="pln">html</span>

0x05 SVN導致文件泄露

Subversion,簡稱SVN,是一個開放源代碼的版本控制系統,相對於的RCS、CVS,采用了分支管理系統,它的設計目標就是取代CVS。互聯網上越來越多的控制服務從CVS轉移到Subversion。

Subversion使用服務端—客戶端的結構,當然服務端與客戶端可以都運行在同一臺服務器上。在服務端是存放著所有受控制數據的Subversion倉庫,另一端是Subversion的客戶端程序,管理著受控數據的一部分在本地的映射(稱為“工作副本”)。在這兩端之間,是通過各種倉庫存取層(Repository Access,簡稱RA)的多條通道進行訪問的。這些通道中,可以通過不同的網絡協議,例如HTTP、SSH等,或本地文件的方式來對倉庫進行操作。

<span class="pln">e</span><span class="pun">.</span><span class="pln">g</span><span class="pun">.</span><span class="pln">http</span><span class="pun">:</span><span class="com">//www.am0s.com/admin/scripts/fckeditor.266/editor/.svn/entries</span>

漏洞利用:

工具:

dvcs-ripper

PHP
<span class="pln">rip</span><span class="pun">-</span><span class="pln">svn</span><span class="pun">.</span><span class="pln">pl </span><span class="pun">-</span><span class="pln">v </span><span class="pun">-</span><span class="pln">u http</span><span class="pun">:</span><span class="com">//www.am0s.com/.svn/</span>

Seay-Svn

0x06 WEB-INF/web.xml泄露

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

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

  • /WEB-INF/web.xml:Web應用程序配置文件,描述了 servlet 和其他的應用組件配置及命名規則。
  • /WEB-INF/classes/:含了站點所有用的 class 文件,包括 servlet class 和非servlet class,他們不能包含在 .jar文件中
  • /WEB-INF/lib/:存放web應用需要的各種JAR文件,放置僅在這個應用中要求使用的jar文件,如數據庫驅動jar文件
  • /WEB-INF/src/:源碼目錄,按照包名結構放置各個java文件。
  • /WEB-INF/database.properties:數據庫配置文件

漏洞成因:

通常一些web應用我們會使用多個web服務器搭配使用,解決其中的一個web服務器的性能缺陷以及做均衡負載的優點和完成一些分層結構的安全策略等。在使用這種架構的時候,由於對靜態資源的目錄或文件的映射配置不當,可能會引發一些的安全問題,導致web.xml等文件能夠被讀取。

漏洞檢測以及利用方法:

通過找到web.xml文件,推斷class文件的路徑,最後直接class文件,在通過反編譯class文件,得到網站源碼。
一般情況,jsp引擎默認都是禁止訪問WEB-INF目錄的,Nginx 配合Tomcat做均衡負載或集群等情況時,問題原因其實很簡單,Nginx不會去考慮配置其他類型引擎(Nginx不是jsp引擎)導致的安全問題而引入到自身的安全規範中來(這樣耦合性太高了),修改Nginx配置文件禁止訪問WEB-INF目錄就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!

0x07 CVS泄漏

漏洞利用

測試的目錄

PHP
<span class="pln">http</span><span class="pun">:</span><span class="com">//www.am0s.com/CVS/Root 返回根信息</span><span class="pln">
http</span><span class="pun">:</span><span class="com">//www.am0s.com/CVS/Entries 返回所有文件的結構</span>

取回源碼的命令

PHP
<span class="pln">bk clone http</span><span class="pun">:</span><span class="com">//www.am0s.com/name dir</span>

這個命令的意思就是把遠端一個名為name的repo clone到本地名為dir的目錄下。

查看所有的改變的命令,轉到download的目錄

PHP
<span class="pln">bk changes</span>

Bazaar/bzr

工具:

dvcs-ripper

<span class="pln">rip</span><span class="pun">-</span><span class="pln">bzr</span><span class="pun">.</span><span class="pln">pl </span><span class="pun">-</span><span class="pln">v </span><span class="pun">-</span><span class="pln">u http</span><span class="pun">:</span><span class="com">//www.am0s.com/.bzr/</span>

工具推薦

  • Bitkeeper
  • weakfilescan

參考

  • https://zhuanlan.zhihu.com/p/21296806
  • http://www.s2.sshz.org/post/source-code-leak/

轉載:http://www.am0s.com/ctf/175.html

CTF中常見Web源碼泄露總結