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

1,google hack

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

在香坊等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作專業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),香坊網(wǎng)站建設(shè)費(fèi)用合理。

2,svn信息利用原理

2.1 svn<=1.6

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

2.2 svn>1.6

svn在1.6之后引入了wc.db來管理文件,該文件位于.svn/wc.db。普通文件位置:somedomain/.svn/pristine/"XX"/"CHECKSUM".svn-base,CHECKSUM是文件的sha1值,xx則是他的前兩位。那這個(gè)CHECKSUM去哪找呢?就是我們剛才提到的wc.db,這是一個(gè)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的泄漏。另外還可以對你感興趣的目標(biāo)進(jìn)行代碼審計(jì),發(fā)現(xiàn)注入,命令執(zhí)行等等。

4.1 掃描實(shí)現(xiàn)

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

4.2 結(jié)果過濾

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

4.3 初步結(jié)果

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

網(wǎng)頁名稱:svn,git信息泄漏利用原理及現(xiàn)狀
當(dāng)前地址:http://bm7419.com/article32/psdgpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站建設(shè)、做網(wǎng)站、服務(wù)器托管、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)