前言
在ctf中發現很多原始碼泄露的題,總結一下,對于網站的搭建要注意洗掉備份檔案,和一些工具的使用如git,svn等等的規范使用,避免備份檔案出現在公網
SVN原始碼泄露
原理
SVN(subversion)是源代碼版本管理軟體,造成SVN源代碼漏洞的主要原因是管理員操作不規范,“在使用SVN管理本地代碼程序中,會自動生成一個名為.svn的隱藏檔案夾,其中包含重要的源代碼資訊,但一些網站管理員在發布代碼時,不愿意使用‘匯出’功能,而是直接復制代碼檔案夾到WEB服務器上,這就使.svn隱藏檔案夾被暴露于外網環境,黑客可以借助其中包含的用于版本資訊追蹤的‘entries’檔案,逐步摸清站點結構,”(可以利用.svn/entries檔案,獲取到服務器原始碼、svn服務器賬號密碼等資訊)
更嚴重的問題在于,SVN產生的.svn目錄下還包含了以.svn-base結尾的源代碼檔案副本(低版本SVN具體路徑為text-base目錄,高版本SVN為pristine目錄),如果服務器沒有對此類后綴做決議,黑客則可以直接獲得檔案源代碼,
利用工具SvnHack
github專案地址:https://github.com/callmefeifei/SvnHack
使用需要python2的環境
列取目錄:
python SvnHack.py -u http://trafficbonus.com/.svn/entries

列取指定目錄
python SvnHack.py -u http://trafficbonus.com/.svn/entries -d sql
讀取指定代碼
python SvnHack.py -u http://trafficbonus.com/.svn/entries -r index.php

下載整站
python SvnHack.py -u http://trafficbonus.com/.svn/entries --download

git原始碼泄露
原理
Git是一個開源的分布式版本控制系統,在執行git init初始化目錄的時候,會在當前目錄下自動創建一個.git目錄,用來記錄代碼的變更記錄等,發布代碼的時候,如果沒有把.git這個目錄洗掉,就直接發布到了服務器上,攻擊者就可以通過它來恢復源代碼,
利用githack(需要python2環境)
github專案地址:https://github.com/lijiejie/GitHack
python GitHack.py http://www.openssl.org/.git/
hg原始碼泄露
原理
Mercurial 是一種輕量級分布式版本控制系統,使用 hg init的時候會生成.hg檔案
利用需要perl
github專案地址:https://github.com/kost/dvcs-ripper
使用
perl rip-hg.pl -v -u http://www.example.com/.hg/

cvs漏洞泄露
原理
CVS是一個C/S系統,是一個常用的代碼版本控制軟體,主要在開源軟體管理中使用,與它相類似的代碼版本控制軟體有subversion,多個開發人員通過一個中心版本控制系統來記錄檔案版本,從而達到保證檔案同步的目的,CVS版本控制系統是一種GNU軟體包,主要用于在多人開發環境下的原始碼的維護,但是由于之前CVS編碼的問題,大多數軟體開發公司都使用SVN替代了CVS,主要是針對 CVS/Root以及CVS/Entries目錄,直接就可以看到泄露的資訊,
http://url/CVS/Root 回傳根資訊
http://url/CVS/Entries 回傳所有檔案的結構
利用
github專案地址:https://github.com/kost/dvcs-ripper.git
運行示例:
perl rip-cvs.pl -v -u http://www.example.com/CVS/
Bazaar/bzr泄露
原理
Bazaar(bzr)是另一個開源的 DVCS(Distributed Version Control System,即分布式版本控制系統),它試圖給 SCM(Source Code Management,即原始碼管理) 的世界里帶來一些新的東西,
bzr 是 Canonical 公司支持的一個專案,也就是 Ubuntu Linux 的發行公司,簡單來說,bzr 是用 python 撰寫的,用于版本控制,
利用
perl rip-bzr.pl -v -u http://www.example.com/.bzr/

網站備份壓縮檔案
管理員將網站源代碼備份在Web目錄下,攻擊者通過猜解檔案路徑,下載備份檔案,導致源代碼泄露,
常見備份檔案后綴
.index.php.swp
index.php.swp
index.php.bak
.index.php~
index.php.bak_Edietplus
index.php.~
index.php.~1~
index.php
index.php~
index.php.rar
index.php.zip
index.php.7z
index.php.tar.gz
www.zip
www.rar
www.zip
www.7z
www.tar.gz
www.tar
web.zip
web.rar
web.zip
web.7z
web.tar.gz
web.tar
wwwroot.rar
web.rar
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 檔案,得到網站原始碼,
SWP 檔案泄露
swp即swap檔案,在編輯檔案時產生的臨時檔案,它是隱藏檔案,如果程式正常退出,臨時檔案自動洗掉,如果意外退出就會保留,檔案名為 .filename.swp,
漏洞利用:直接訪問.swp檔案,下載回來后刪掉末尾的.swp,獲得原始碼檔案,
github原始碼泄露
GitHub是一個面向開源及私有軟體專案的托管平臺,很多人喜歡把自己的代碼上傳到平臺托管,攻擊者通過關鍵詞進行搜索,可以找到關于目標站點的敏感資訊,甚至可以下載網站原始碼,
github常見搜索語法
in:name test #倉庫標題搜索含有關鍵字 SpringCloud
in:descripton test #倉庫描述搜索含有關鍵字
in:readme test #Readme檔案搜素含有關鍵字
stars:>3000 test #stars數量大于3000的搜索關鍵字
stars:1000..3000 test #stars數量大于1000小于3000的搜索關鍵字
forks:>1000 test #forks數量大于1000的搜索關鍵字
forks:1000..3000 test #forks數量大于1000小于3000的搜索關鍵字
size:>=5000 test #指定倉庫大于5000k(5M)的搜索關鍵字
pushed:>2019-02-12 test #發布時間大于2019-02-12的搜索關鍵字
created:>2019-02-12 test #創建時間大于2019-02-12的搜索關鍵字
user:test #用戶名搜素
license:apache-2.0 test #明確倉庫的 LICENSE 搜索關鍵字
language:java test #在java語言的代碼中搜索關鍵字
user:test in:name test #組合搜索,用戶名test的標題含有test的
Google郵箱搜索
使用 Github 進行郵件配置資訊收集
很多網站及系統都會使用 pop3 和 smtp 發送來郵件,不少開發者由于安全意識不足會把相關的配置資訊也放到Github上,所以如
果這時候我們動用一下google搜索命令陳述句,構造一下關鍵字,就能把這些資訊給找出來了,
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
site:Github.com smtp password
site:Github.com String password smtp
資料庫資訊搜集
site:Github.com sa password
site:Github.com root password
site:Github.com User ID=’sa’;Password
site:Github.com inurl:sql
.DS_Store泄露
.DS_Store 檔案利用 .DS_Store 是 Mac OS 保存檔案夾的自定義屬性的隱藏檔案,通過.DS_Store可以知道這個目錄里面所有檔案的清單,###
利用
github專案地址:https://github.com/lijiejie/ds_store_exp
使用下載后,進入目錄更新python2庫
pip install -r requirements.txt
python ds_store_exp.py http://6974-59fce729-40f6-4124-a2c9-a5a66673dc66node3.buuoj.cn:28261/.DS_Store
buuctf中的一道題演示,成功拉取了目錄


一個ctf目錄掃描小工具
當然也可以自己撰寫字典,撰寫腳本,或用dirsearch,御劍等工具掃描,下面介紹一個自己用的ctf目錄掃描
專案地址:https://github.com/kingkaki/ctf-wscan
使用
python3 ctf-wscan.py http://beed29ec-8f77-4e15-a1d6-c327148dab8e.node3.buuoj.cn/

引數k可以設定關鍵詞
config.py還可以設定關鍵詞,執行緒,請求方式,是否記錄等等,如果你懶得寫腳本可以使用,好吧我是懶狗

參考文章及說明
檔案的泄露基本都是人為的不正常操作導致的,如直接復制網站發布,github同步,git的.git未洗掉,注意使用規范,查看自己網站的目錄的檔案特別是隱藏檔案就能很容易的發現,檔案的泄露,
參考文章:https://www.cnblogs.com/yesec/p/12232045.html
最后歡迎訪問我的個人博客:https://lmg66.github.io/
說明:本文僅限技術研究與討論,嚴禁用于非法用途,否則產生的一切后果自行承擔
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/448.html
標籤:其他
