1. 程式人生 > >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](https://github.com/callmefeifei/SvnHack) **使用需要python2的環境** 列取目錄: ``` python SvnHack.py -u http://trafficbonus.com/.svn/entries ``` ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200901205006339-12260316.png) 列取指定目錄 ``` python SvnHack.py -u http://trafficbonus.com/.svn/entries -d sql ``` 讀取指定程式碼 ``` python SvnHack.py -u http://trafficbonus.com/.svn/entries -r index.php ``` ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200901205558516-409628849.png) 下載整站 ``` python SvnHack.py -u http://trafficbonus.com/.svn/entries --download ``` ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200901205733169-437490455.png) ## git原始碼洩露 ### 原理 Git是一個開源的分散式版本控制系統,在執行git init初始化目錄的時候,會在當前目錄下自動建立一個.git目錄,用來記錄程式碼的變更記錄等。釋出程式碼的時候,如果沒有把.git這個目錄刪除,就直接釋出到了伺服器上,攻擊者就可以通過它來恢復原始碼。 ### 利用githack(需要python2環境) github專案地址:[https://github.com/lijiejie/GitHack](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](https://github.com/kost/dvcs-ripper) 使用 ``` perl rip-hg.pl -v -u http://www.example.com/.hg/ ``` ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200901213121294-1874485432.png) ## 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](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/ ``` ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200901214523375-276363481.png) ## 網站備份壓縮檔案 管理員將網站原始碼備份在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](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中的一道題演示,成功拉取了目錄 ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200905140209782-55550966.png) ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200905140252510-1297482429.png) ## 一個ctf目錄掃描小工具 當然也可以自己編寫字典,編寫指令碼,或用dirsearch,御劍等工具掃描,下面介紹一個自己用的ctf目錄掃描 專案地址:[https://github.com/kingkaki/ctf-wscan](https://github.com/kingkaki/ctf-wscan) ### 使用 python3 ctf-wscan.py http://beed29ec-8f77-4e15-a1d6-c327148dab8e.node3.buuoj.cn/ ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200905145320882-1349294604.png) 引數k可以設定關鍵詞 config.py還可以設定關鍵詞,執行緒,請求方式,是否記錄等等,如果你懶得寫指令碼可以使用,好吧我是懶狗 ![](https://img2020.cnblogs.com/blog/2092671/202009/2092671-20200905173339131-130526595.png) ## 參考文章及說明 檔案的洩露基本都是人為的不正常操作導致的,如直接複製網站釋出,github同步,git的.git未刪除,注意使用規範,檢視自己網站的目錄的檔案特別是隱藏檔案就能很容易的發現,檔案的洩露。 參考文章:[https://www.cnblogs.com/yesec/p/12232045.html](https://www.cnblogs.com/yesec/p/12232045.html) 最後歡迎訪問我的個人部落格:https://lmg66.github.io/ 說明:本文僅限技術研究與討論,嚴禁用於非法用途,否則產生的一切後果自