柚子快報激活碼778899分享:git泄露
柚子快報激活碼778899分享:git泄露
目錄
一、漏洞形成的原因
二、判斷是否存在git泄露
三、漏洞的危害
四、git的結(jié)構(gòu)
五、一些常用的命令
六、git的一些命令演示
git log?//查看提交歷史記錄,從最近到最遠,可以看到3次?
?git reflog?//查看每一次修改歷史
git remote -v //查看遠程倉庫信息
?七、相關(guān)例題(ctfhub)
Log
Stash(git的暫存文件)
Index(也可以理解為暫存文件)
一、漏洞形成的原因
開發(fā)人員會使用 git 進行版本控制,對站點自動部署。但如果配置不當,可能會將 .git 文件夾直接部署到線上環(huán)境,這就引起了 git 泄露漏洞,我們可以利用這個漏洞直接獲得網(wǎng)頁源碼。
二、判斷是否存在git泄露
利用 dirsearch這類掃描工具,如果存在./git泄露的問題的話,會被掃描出來的
三、漏洞的危害
攻擊者利用該漏洞下載.git文件夾中的所有內(nèi)容。如果文件夾中存在敏感信息(數(shù)據(jù)庫賬號密碼、源碼等),通過白盒的審計等方式就可能直接獲得控制服務(wù)器的權(quán)限和機會!
四、git的結(jié)構(gòu)
Git大體上分為四個結(jié)構(gòu):工作區(qū),暫存區(qū),本地倉庫(版本庫),遠程倉庫
(1)工作區(qū)
所謂工作區(qū),就是項目放置的位置。直白的說就是 .git 所在文件夾,就是你的工作區(qū) (2)暫存區(qū)
暫存區(qū)英文叫 stage 或 index。一般存放在 .git 目錄下的 index 文件(.git/index)中,所以我們把暫存區(qū)有時也叫作索引(index) (3)本地倉庫
本地倉庫(版本庫)用于存儲各種版本(分支)的信息。直接點,.git 文件就是你的版本庫,其中有一個 HEAD 文件,存儲著用于指向當前分支的游標,通過這個游標就可以切換到版本庫中存儲的各個版本 (4)遠程倉庫
這個很好理解,就是一個服務(wù)器存貯著你的各種項目,像國內(nèi)的 gitee ,國外的 github , gitlab 等等
.git目錄:使用git init初始化git倉庫的時候,生成的隱藏目錄,git會將所有的文件,目錄,提交等轉(zhuǎn)化為git對象,壓縮存儲在這個文件夾當中。
COMMIT_EDITMSG:保存最新的commit message,Git系統(tǒng)不會用到這個文件,用戶一個參考文件
config:Git倉庫的配置文件
description:倉庫的描述信息,主要給gitweb等git托管系統(tǒng)使用
HEAD:這個文件包含了一個檔期分支(branch)的引用,通過這個文件Git可以得到下一次commit的parent
hooks:這個目錄存放一些shell腳本,可以設(shè)置特定的git命令后觸發(fā)相應(yīng)的腳本;在搭建gitweb系統(tǒng)或其他
git托管系統(tǒng)會經(jīng)常用到hook script(鉤子腳本)
index:這個文件就是我們前面提到的暫存區(qū)(stage),是一個二進制文件
info:包含倉庫的一些信息
logs:保存所有更新的引用記錄
objects:所有的Git對象都會存放在這個目錄中,對象的SHA1哈希值的前兩位是文件夾名稱,后38位作為對象文件名
refs:這個目錄一般包括三個子文件夾,heads、remotes和tags,heads中的文件標識了項目中的各個分支指向的當前commit
ORIG_HEAD:HEAD指針的前一個狀態(tài)
五、一些常用的命令
git init 初始化一個git倉庫
git add && git commit //git 添加文件和提交文件
git status 查看當前倉庫狀態(tài)和內(nèi)存狀態(tài)
git ls-files -u 顯示沖突的文件,-s是顯示標記為沖突已解決的文件
git diff 對比工作區(qū)和stage文件的差異
git diff -cached 對比stage和branch之間的差異
git ls-files -stage 檢查保存在stage的文件
git log 顯示到HEAD所指向的commit為止的所有commit記錄
git reset -hard HEAD放棄工作區(qū)和index的改動,HEAD指針仍然指向當前的commit
六、git的一些命令演示
下載git參考資料:kali下載使用GitHack_kali下載使用githack_kali安裝gitclone-csdn博客-CSDN博客
git命令的參考資料:
GIT常用命令大全——趕緊收藏_git命令大全-CSDN博客
1.把文件添加add和提交commit到版本庫:
把文件添加add和提交commit到版本庫?
$ git add test.txt?? ?//添加 $ git commit -m "wrote a test file"?? ?//提交 $ git commit -m "add 3 files."?? ??? ?//一次性提交多個文件
注意:必須在當前版本庫和當前目錄下
2.版本控制:(加粗加紅的是常用的)
$ git log?? ?//查看提交歷史記錄,從最近到最遠,可以看到3次,查看commit提交的歷史數(shù)據(jù),git log默認會輸出commit hash, author, date, commit message。
git diff HEAD:顯示工作目錄(已track但未add文件)和暫存區(qū)(已add但未commit文件)與最后一次commit之間的的所有不相同文件的增刪改。 $ git log --pretty=oneline?? ?//加參,簡潔查看 $ git reflog?? ?//查看每一次修改歷史 $ cat test.txt?? ?//查看文件內(nèi)容 $ git status?? ?//查看工作區(qū)中文件當前狀態(tài)$ git reset --hard HEAD^(HEAD~100)(commit id)?? ?//回退版本 $ git checkout -- test.txt?? ?//丟棄工作區(qū)的修改,即撤銷修改 $ git reset HEAD test.txt?? ?//丟棄暫存區(qū)的修改(若已提交,則回退)?
3.遠程倉庫:
$ ssh-keygen -t rsa -C "youremail@example.com"?? ?//創(chuàng)建SSH Key $ git remote add origin git@github.com:Daisy/AKgit.git?? ?//關(guān)聯(lián) $ git push -u origin master?? ?//將本地內(nèi)容推送到遠程倉庫(第一次) $ git push origin master?? ?//將本地內(nèi)容推送到遠程倉庫(之后) $ git remote -v ? ? ? ?//查看遠程倉庫信息 $ git remote rm origin?? ?//刪除遠程倉庫(解綁) $ git clone git@github.com: Daisy/AKgit.git?? ?//克隆遠程倉庫 //克隆之后使用和查看 $ cd gitskills $ ls $ git remote?? ?//查看遠程庫的信息 $ git remote -v?? ?//查看遠程庫的詳細信息
4.$ git stash?? ?//將現(xiàn)場儲藏起來$ git stash list?? ?//查看儲存的工作現(xiàn)場,列?出Git棧內(nèi)的所有備份,可以利用這個列表來決定從那個地方恢復
//恢復和刪除
$ git stash apply $ git stash drop //恢復并刪除$ git stash pop??從Git棧中讀取最近一次保存的內(nèi)容,恢復工作區(qū)的相關(guān)內(nèi)容。由于可能存在多個Stash的內(nèi)容,所以用棧來管理,pop會從最近的一個stash中讀取內(nèi)容并恢復。
$ git cherry-pick 4c805e2?? ?//復制修改?
git log?//查看提交歷史記錄,從最近到最遠,可以看到3次?
?
?git reflog?//查看每一次修改歷史
?
git remote -v //查看遠程倉庫信息
??
?七、相關(guān)例題(ctfhub)
Log
?1.使用dirsearch掃描,發(fā)現(xiàn)有g(shù)it泄露
??2.先用cd命令進入githack,進入Githack目錄:python2 GitHack.py,再對網(wǎng)站進行處理
??
3.用git log查看提交歷史記錄
??
??4.使用git diff來文件對比 或者用git reset回退文件版本,去文件夾中打開文件發(fā)現(xiàn)flag?
???
Stash(git的暫存文件)
1.使用disearch掃描,發(fā)現(xiàn)有g(shù)it漏洞
2.使用GitHack克隆目錄
??
3.進入新文件后,與上題一樣,先用git log查看提交歷史記錄發(fā)現(xiàn)了add flag的歷史,但是發(fā)現(xiàn)使用git reset回退文件版本與git diff進行文件對比均無法得到flag。
??
4.于是可使用git stash pop提取git的暫存文件
git stash ? ? ? //備份當前工作區(qū)的內(nèi)容,保存到git棧中,從最近的一次commit中讀取相關(guān)內(nèi)容 git stash pop ? //從git棧中獲取到最近一次stash進去的內(nèi)容,恢復工作區(qū)的內(nèi)容。獲取之后,會刪除棧中對應(yīng)的stash
??
Index(也可以理解為暫存文件)
1.掃描成功后githack生成一個文件夾dist,里面直接存放有重新生成的flag文件
??
注意:index雖然也是暫存文件,但是使用git log查看提交歷史記錄,發(fā)現(xiàn)指針直接指向add flag的分支,故查看目錄文件直接有flag。
???
柚子快報激活碼778899分享:git泄露
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。