溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

svn,git信息泄漏利用原理及現(xiàn)狀

發(fā)布時間:2020-08-16 00:07:19 來源:網(wǎng)絡(luò) 閱讀:3510 作者:shengqi158 欄目:安全技術(shù)

1,google hack

svn 搜索技巧 
圖1 
git 搜索技巧 
圖2

2,svn信息利用原理

2.1 svn<=1.6

從svn的結(jié)構(gòu)圖可以看到一個目錄text-base,這里有我們源文件的備份,比如要下載somedomain/phpinfo.php,直接訪問目錄somedomain/.svn/text-base/phpinfo.php.text-base,一般的服務(wù)器既不會阻止該目錄也不會解釋該后綴,我們就可以直接讀到本地來?,F(xiàn)在只是訪問最頂層的文件信息,那怎么遍歷呢?這里面就有.svn/entries,這個文件包含著該基礎(chǔ)目錄下所有的文件和目錄,直接遞推查找就行。

2.2 svn>1.6

svn在1.6之后引入了wc.db來管理文件,該文件位于.svn/wc.db。普通文件位置:somedomain/.svn/pristine/"XX"/"CHECKSUM".svn-base,CHECKSUM是文件的sha1值,xx則是他的前兩位。那這個CHECKSUM去哪找呢?就是我們剛才提到的wc.db,這是一個sqlite數(shù)據(jù)庫。數(shù)據(jù)庫的大體結(jié)構(gòu)如下:


  1. $ sqlite3 wc.db .tables

  2. ACTUAL_NODE NODES PRISTINE WC_LOCK

  3. EXTERNALS NODES_BASE REPOSITORY WORK_QUEUE

  4. LOCK NODES_CURRENT WCROOT

  5. $ sqlite3 wc.db 'select local_relpath, checksum from NODES'

  6. index.php|$sha1$4e6a225331f9ae872db25a8f85ae7be05cea6d51

  7. scripts/menu.js|$sha1$fabeb3ba6a96cf0cbcad1308abdbe0c2427eeebf

  8. style/style.js|$sha1$2cc5590e0ba024c3db77a13896da09b39ea74799

  9. $ sqlite3 wc.db 'select local_relpath, ".svn/pristine/" || substr(checksum,7,2) || "/" || substr(checksum,7) || ".svn-base" as alpha from NODES;'

  10. index.php|.svn/pristine/4e/4e6a225331f9ae872db25a8f85ae7be05cea6d51.svn-base

  11. scripts/menu.js|.svn/pristine/fa/fabeb3ba6a96cf0cbcad1308abdbe0c2427eeebf.svn-base

  12. style/style.js|.svn/pristine/2s/2cc5590e0ba024c3db77a13896da09b39ea74799.svn-base

第一步下載wc.db,然后從NODES表中找到文件名和其sha1值,最后構(gòu)造下載鏈接。

3,git 信息利用原理

首先從git/config信息里面可以得到倉庫地址


  1. [core]

  2. repositoryformatversion = 0

  3. filemode = true

  4. bare = false

  5. logallrefupdates = true

  6. [remote "origin"]

  7. fetch = +refs/heads/*:refs/remotes/origin/*

  8. url = git@git.jingdigital.net:root/pcb001.git

  9. [branch "master"]

  10. remote = origin

  11. merge = refs/heads/master

基本上三步走: 
(1)下載.git/index文件,這是一種git特有的格式,在該文件中包含著文件名和文件SHA1值。 
(2)根據(jù)該文件SHA1值到objects目錄下載相應(yīng)文件,具體路徑somedomain/.git/objects/"XX"/"CHECKSUM" 
(3)zlib解壓文件,按照原始目錄寫入源代碼。

4,對國內(nèi)80端口的簡單掃描

有了前面這些基礎(chǔ),就可以通過泄漏的信息來還原代碼,能還原代碼的話就可以干很多事了。最常見就是代碼中泄漏email地址,數(shù)據(jù)庫連接方式,調(diào)試接口,一些第三方key的泄漏。另外還可以對你感興趣的目標進行代碼審計,發(fā)現(xiàn)注入,命令執(zhí)行等等。

4.1 掃描實現(xiàn)

(1)從文件讀取80ip段數(shù)據(jù),設(shè)最大并發(fā)16,最大連接數(shù)60,這個時候的帶寬基本控制在600KB,利用周末時間跑了一天即可跑完。 
(2)設(shè)置pycurl的一些參數(shù),如PROXY,MAXREDIRS=0,這樣就不跳轉(zhuǎn)了,nosignal=1 這個參數(shù)必須為1,這是pycurl的一個bug,中間測試的過程中就是因為參數(shù)未加,導(dǎo)致跑了半天結(jié)果中途掛了。 
(3)請求/.git/config信息,如果200,返回的類型為text/plain并且存在repositoryformatversion字段。請求/.svn/entries,如果200,Content-Type為text/plain,并且dir存在于返回值。其實這個是有誤的,因為在svn大于1.6的情況下,在返回值中只有一個簡單的數(shù)字,并不存在dir,所以掃描結(jié)果中基本上沒有1.6以上的結(jié)果。

4.2 結(jié)果過濾

在掃描的結(jié)果中分析出現(xiàn)的url,有些.svn/entries返回200,但是首頁確是有問題,還有發(fā)現(xiàn)某些ip不在中國。于是寫了腳本去請求這些url的首頁,并且從一個ip查詢網(wǎng)站去查詢ip地址歸屬。

4.3 初步結(jié)果

在525萬80端口數(shù)據(jù)中,跑出6000條結(jié)果,相當于千分之一的概率,另外還未包括前面對svn 1.6判斷有誤的分析,所以這個概率還是很高的。 
簡單的分析了git信息的泄漏,總共有接近600條數(shù)據(jù),去除在國外的和首頁不正常的,能達到250多,其中差不多一半的都是在阿里云的ip上,這些公司一般都是創(chuàng)業(yè)公司。在這些泄漏的代碼中sql注入一般很少。 
svn的話,一般都是一些比較老的網(wǎng)站,這主要可能還是我前面的判斷邏輯有點小問題。注入問題比較嚴重。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI