偷偷學一手:ctf常見源碼泄露

偷偷學一手:ctf常見源碼泄露

在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的環境
列取目錄:

Copypython SvnHack.py -u http://trafficbonus.com/.svn/entries

偷偷學一手:ctf常見源碼泄露

列取指定目錄

Copypython SvnHack.py -u http://trafficbonus.com/.svn/entries -d sql

讀取指定代碼

Copypython SvnHack.py -u http://trafficbonus.com/.svn/entries -r index.php

偷偷學一手:ctf常見源碼泄露

下載整站

Copypython SvnHack.py -u http://trafficbonus.com/.svn/entries --download

偷偷學一手:ctf常見源碼泄露

git源碼泄露#

原理#

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

利用githack(需要python2環境)#

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

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

hg源碼泄露#

原理#

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

利用需要perl#

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

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

偷偷學一手:ctf常見源碼泄露

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

運行示例:

Copyperl 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 編寫的,用於版本控制。

利用#

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

偷偷學一手:ctf常見源碼泄露

網站備份壓縮文件#

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

常見備份文件後綴#

Copy.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 主要包含一下文件或目錄:

CopyWEB-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常見搜索語法#

Copyin: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搜索命令語句,構造一下關鍵字,就能把這些信息給找出來了。

Copysite: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

資料庫信息蒐集#

Copysite: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庫

Copypip install -r requirements.txt

Copypython ds_store_exp.py http://6974-59fce729-40f6-4124-a2c9-a5a66673dc66node3.buuoj.cn:28261/.DS_Store

buuctf中的一道題演示,成功拉取了目錄

偷偷學一手:ctf常見源碼泄露

偷偷學一手:ctf常見源碼泄露

一個ctf目錄掃瞄小工具#

當然也可以自己編寫字典,編寫腳本,或用dirsearch,御劍等工具掃瞄,下面介紹一個自己用的ctf目錄掃瞄
項目地址:https://github.com/kingkaki/ctf-wscan

使用#

python3 ctf-wscan.py http://beed29ec-8f77-4e15-a1d6-c327148dab8e.node3.buuoj.cn/

偷偷學一手:ctf常見源碼泄露

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

最後,咱給小編:

1. 點讚+關注

2. 點頭像關注後多多評論,轉發給有需要的朋友。

謝謝!!

來源:kknews偷偷學一手:ctf常見源碼泄露