一、源碼(備份文件)泄露
1、git泄露
Git是一個開源的分布式版本控制系統,在執行git init
初始化目錄的時候,會在當前目錄下自動創建一個.git
目錄,用來記錄代碼的變更記錄等。發布代碼的時候,如果沒有把.git
這個目錄刪除,就直接發布到了服務器上,攻擊者就可以通過它來恢復源代碼
hook:存放一些sheel的地方。
info:存放倉庫的信息
objects:存放所有git對象的地方
refs:存放提交hash的地方
config:github的配置信息
description:倉庫的描述信息,主要給gitweb等git托管系統使用
HEAD:映射到ref引用,能夠找到下一次commit的前一次哈希值
git泄露可以使用GitHack利用工具進行利用,工具地址https://github.com/zwshi/GitHack.git
使用方法:python GitHack.py http://www.example.com/.git/
還原后的文件在 dist/ 目錄下
例題1:CTFHub-----log
1)掃描發現 .git 泄露
2)python GitHack.py 題目url/.git/
將源碼clone到本地,然后進入該目錄
3)執行 git log
查看歷史記錄
4)git diff
提交的記錄碼
注:
查看歷史記錄:git log
對比兩次提交:git diff
切換版本:git reset
例題2:CTFHub----stash
同樣先使用GitHack將git clone到本地,然后查看
去查了一下資料:
git stash
能夠將所有未提交的修改(工作區和暫存區)保存至堆棧中,用於后續恢復當前工作目錄。
查看當前堆棧中保存的未提交的修改 使用git stash list
可看到add flag這個工作也被保存在了堆棧中,所以只需要知道如何恢復就可以了
使用git stash apply
恢復了一個txt文件,查看得到flag
例題3:CTFHub----index
這道題直接用githack工具clone到源碼就得到flag了
但參考了一下大佬的wp,發現考點其實是git的index暫存區文件
1)使用git ls-files
查看暫存區里面有哪些文件
2)需要查看27741192706094.txt文件對應的Blob對象,如下:
git ls-files -s -- 27741192706094.txt
或者直接 git ls-files -s
3)然后通過Blob對象,查詢27741192706094.txt.txt
里面的內容:git cat-file -p 441a2
修復建議
刪除.git目錄或者修改中間件配置進行對.git隱藏文件夾的訪問。
2、SVN泄露
使用svn版本控制系統時,由於錯誤操作將.svn文件暴露在外網環境中,即可利用該文件還原出服務器源碼、SVN服務器賬號密碼等信息。
當svn使用了checkout命令后就會生成.svn文件,里面存儲着備份信息。
svn信息泄露漏洞主要利用了里面的entris文件,通過.svn/entris
可以下載里面的所有代碼,但是只能作用在svn1.6之前的版本;在svn1.7后的版本引入一個名為wc.db的數據庫數據存放文件來管理文件,通過訪問.svn/wc.db
可以下載到本地。
利用工具:dvcs-ripper 地址:https://github.com/kost/dvcs-ripper (需要有svn和perl環境)
例題:ctfhub-svn
這里是svn1.7之后的版本,我們下載wc.db文件,/.svn/wc.db
使用SQLiteStudio打開,發現flag_1831822206.txt
文件,訪問之
我們使用dvcs-ripper工具:`https://github.com/kost/dvcs-ripper`
perl rip-svn.pl -u http://challenge-8cad6507cc3f2aca.sandbox.ctfhub.com:10080/.svn/
我們需要使用ls -al
才可以看到隱藏的文件夾.svn
因為之前我們已經嘗試了訪問wc.db
數據庫里面的文件了,但是發現flag.txt
已經被刪除了,所以我們到緩存文件夾pristine文件夾里面去尋找flag,在8f文件夾里面獲取到flag
3、hg源碼泄露
Mercurial 是一種輕量級分布式版本控制系統,hg在初始化代碼庫的時候,會在當前目錄下面產生一個.hg的隱藏文件
eg: http://www.example.com/.hg/
利用工具:dvcs-ripper:https://github.com/kost/dvcs-ripper
使用:
rip-hg.pl -v -u http://www.example.com/.hg/
如果沒有設置系統變量,需要
perl rip-hg.pl -u http://www.example.com/.hg/
查看隱藏文件:ls -al
例題---ctfhub-hg
直接用工具即可
4、DS_Store 文件泄露
.DS_Store 是 Mac OS 保存文件夾的自定義屬性的隱藏文件。通過.DS_Store可以知道這個目錄里面所有文件的清單。
eg: http://www.example.com/.ds_store/
利用工具:
ds_store_exp: https://github.com/lijiejie/ds_store_exp
使用:
ds_store_exp.py http://www.example.com/.ds_store/
5、CVS泄露
CVS是一個C/S系統,多個開發人員通過一個中心版本控制系統來記錄文件版本,從而達到保證文件同步的目的。主要是針對 CVS/Root以及CVS/Entries目錄,直接就可以看到泄露的信息。
eg:
http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的結構
利用工具:dvcs-ripper: https://github.com/kost/dvcs-ripper.git
使用:
rip-cvs.pl -v -u http://www.example.com/CVS/
6、GitHub源碼泄漏
很多人喜歡把自己的代碼上傳到平台托管。通過關鍵詞進行搜索,可以找到關於目標站點的敏感信息,甚至可以下載網站源碼。
7、網站備份文件
常見的網站源碼備份文件后綴
- tar
- tar.gz
- zip
- rar
常見的網站源碼備份文件名
- web
- website
- backup
- back
- www
- wwwroot
- temp
也可以直接用御劍掃描后台
8、vim緩存
vim會自動生成的備份文件以及臨時文件
臨時文件是在編輯文本時就會創建的文件,如果程序正常退出,臨時文件自動刪除,如果意外退出就會保留,文件名為 .filename.swp
,(第一次產生的交換文件名為“.filename.txt.swp
”;再次意外退出后,將會產生名為.filename.txt.swo
的交換文件;而第三次產生的交換文件則為.filename.txt.swn
)
例題:CTFHub---vim緩存
二、中間件等其他信息泄露
1、phpinfo
有些網站可能未關閉調試功能,存在調試頁面,比如訪問phpinfo頁面
phpinfo去過能被外部用戶訪問,可能會造成的危害有:
泄露網站真實ip
網站絕對路徑泄漏或日志文件路徑泄露,可以寫入shell
泄露一些特殊的應用信息和服務
一些敏感配置,比如禁用的函數
php版本信息
2、Apache-tomcat樣例文件泄露
apache 的一些樣例文件沒有刪除,可能存在cookie、session偽造,進行后台登錄操作。常見的路徑有:
http://xxx.com/examples/servlets/servlet/CookieExample
http://xxx.com/examples/servlets/servlet/RequestHeaderExample
http://xxx.com/examples/jsp/snp/snoop.jsp
http://xxx.com/examples/async/async1
例:https://blog.csdn.net/alex_bean/article/details/87854752
3、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 文件,得到網站源碼。
4、tomcat
tomcat 后綴改成大寫,會顯示源碼
只要把jsp文件后綴名改為大寫就可以(老版本)
個人筆記,可能有遺漏,后續補充...