在ctf中發現不少源碼泄露的題,總結一下,對於網站的搭建要注意刪除備份文件,和一些工具的使用如git,svn等等的規範使用,避免備份文件出如今公網php
SVN(subversion)是源代碼版本管理軟件,形成SVN源代碼漏洞的主要緣由是管理員操做不規範。「在使用SVN管理本地代碼過程當中,會自動生成一個名爲.svn的隱藏文件夾,其中包含重要的源代碼信息。但一些網站管理員在發佈代碼時,不肯意使用‘導出’功能,而是直接複製代碼文件夾到WEB服務器上,這就使.svn隱藏文件夾被暴露於外網環境,黑客能夠藉助其中包含的用於版本信息追蹤的‘entries’文件,逐步摸清站點結構。」(能夠利用.svn/entries文件,獲取到服務器源碼、svn服務器帳號密碼等信息)html
更嚴重的問題在於,SVN產生的.svn目錄下還包含了以.svn-base結尾的源代碼文件副本(低版本SVN具體路徑爲text-base目錄,高版本SVN爲pristine目錄),若是服務器沒有對此類後綴作解析,黑客則能夠直接得到文件源代碼。java
github項目地址:https://github.com/callmefeifei/SvnHack
使用須要python2的環境
列取目錄:node
python SvnHack.py -u http://trafficbonus.com/.svn/entries
列取指定目錄python
python SvnHack.py -u http://trafficbonus.com/.svn/entries -d sql
讀取指定代碼git
python SvnHack.py -u http://trafficbonus.com/.svn/entries -r index.php
下載整站github
python SvnHack.py -u http://trafficbonus.com/.svn/entries --download
Git是一個開源的分佈式版本控制系統,在執行git init初始化目錄的時候,會在當前目錄下自動建立一個.git目錄,用來記錄代碼的變動記錄等。發佈代碼的時候,若是沒有把.git這個目錄刪除,就直接發佈到了服務器上,攻擊者就能夠經過它來恢復源代碼。web
github項目地址:https://github.com/lijiejie/GitHacksql
python GitHack.py http://www.openssl.org/.git/
Mercurial 是一種輕量級分佈式版本控制系統,使用 hg init的時候會生成.hg文件數據庫
github項目地址:https://github.com/kost/dvcs-ripper
使用
perl rip-hg.pl -v -u http://www.example.com/.hg/
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)是另外一個開源的 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是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即swap文件,在編輯文件時產生的臨時文件,它是隱藏文件,若是程序正常退出,臨時文件自動刪除,若是意外退出就會保留,文件名爲 .filename.swp。
漏洞利用:直接訪問.swp文件,下載回來後刪掉末尾的.swp,得到源碼文件。
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的
使用 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 是 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中的一道題演示,成功拉取了目錄
固然也能夠本身編寫字典,編寫腳本,或用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未刪除,注意使用規範,查看本身網站的目錄的文件特別是隱藏文件就能很容易的發現,文件的泄露。
參考文章:http://www.javashuo.com/article/p-mdrcefaq-nq.html
最後歡迎訪問個人我的博客:https://lmg66.github.io/ 說明:本文僅限技術研究與討論,嚴禁用於非法用途,不然產生的一切後果自行承擔