漏洞挖掘中的常見的源碼泄露
這幾天一直想寫點啥,偶然間,逛我們團長 小艾 的博客,我看到一個文章,題目是 " 常見的web 源碼泄露漏洞 ",其中記錄了好多源碼泄露,但是我就見過其中三個,所以就想著總結一份挖洞中常見的源碼泄露吧。
小艾那篇文章的地址:http://www.htmlsec.com/?p=50n
在記錄之前,我為了證明我的想法,我以關鍵詞 源碼泄露 在烏雲漏洞庫刷了一遍案例。
一共 300 多個,但是說白了還是常見的那幾種,我就從多到少的方式開始寫。一,svn 源碼泄露
SVN(subversion)是源代碼版本管理軟體。在使用SVN管理本地代碼過程中,會自動生成一個名為.svn的隱藏文件夾,其中包含重要的源代碼信息。但一些網站管理員在發布代碼時,不願意使用『導出』功能,而是直接複製代碼文件夾到WEB伺服器上,這就使.svn隱藏文件夾被暴露於外網環境,黑客可以藉助其中包含的用於版本信息追蹤的『entries』文件,逐步摸清站點結構。
svn 源碼泄露示例:
http://127.0.0.1/.svn/entriesn
1,
2, 如果存在以上案例中的情形,說明存在 svn 源碼泄露 。svn 源碼泄露利用工具:
這個一般都是使用的 Seay SVN漏洞利用工具 法師的工具。
鏈接: http://pan.baidu.com/s/1eSP6lUE 密碼: a7b1n
漏洞利用證明截圖:
二, 網站源碼壓縮備份泄露
一般網站管理員在日常維護中,總會把網站源碼給備份一下,防止網站出現問題時,能馬上的恢復使用,不過一般的管理員安全意識不高,在備份的時候,會使用一些常見的壓縮備份名,而且不光使用常見的備份名字,大部分的管理還會把備份好的源碼直接放在網站根目錄里,這樣給一些不法之徒,提供了一個很方便的滲透思路,或者有些直接不需要滲透了,因為備份中的數據,就已經滿足那些不法之徒的需求了。
網站源碼壓縮備份示例:
1,
2,部分常見的網站源碼壓縮備份名:0.rarnweb.rarnwww.rarnwwwroot.rarnback.rarntemp.rarnbackup.rarnbbs.zipnwebsite.rarn
常用探測源碼備份工具:
這個其實不是靠工具的,是靠字典的,工具的話,網上任何能掃目錄的工具,都可以用來探測源碼備份的,不過常見的還是用的 御劍1.5 ,或者自己寫的一些掃目錄的小腳本工具。
三, .git 源碼泄露
在運行git init初始化代碼庫的時候,會在當前目錄下面產生一個.git的隱藏文件,用來記錄代碼的變更記錄等等。在發布代碼的時候,把.git這個目錄沒有刪除,直接發布了。使用這個文件,可以用來恢復源代碼。
.git 源碼泄露示例:
http://127.0.0.1/.git/confign
.git 漏洞利用工具:
1, GitHack
GitHack.py http://127.0.0.1/.git/n
GitHack 工具使用說明:
GitHack:一個git泄露利用腳本 - FreeBuf.COM | 關注黑客與極客
2,dvcs-ripper
rip-git.pl -v -u http://127.0.0.1/.git/n
暫無使用詳細使用說明,推薦使用第一個工具。
四,GitHub 項目源碼泄露
github 是全球最大的 那個啥 交流網站,數以百計的大俠,高手,聖手,教主,小白,宗主,等等級別人物的彙集之地,而平台的服務設施,很人性化,而且用戶體驗度高,所以,用的人很多,而且很人也都喜歡把自己的代碼上傳到平台,反正是很方便。
有些安全意識不高的程序員大意的把自己的項目源碼上傳到 GitHub ,一些 不法份子 在收集信息中,通過關鍵詞進行搜索,可以找到關於目標站點的信息,有些信息直接泄露了網站源碼,管理員賬號密碼,資料庫信息等。
漏洞示例:
http://www.loner.fm/bugs/searchbug.php?q=github&page=1n
----------------------------------------------------------------------------------------------------------------------
總結:
源碼泄露,正如一開始我看小艾那個文章,有好多個,但是在實際的漏洞挖掘中,就這不幾個常見的,或者說就前三種,剩下的源碼泄露的漏洞都是不好找。
-----------------------------------------------------------------------------------------------------------------------
完了嗎?肯定不能完啊!主要還是閑的沒事,就自己想著自己寫一個掃源碼泄露的小腳本吧,結果,從一開始遠大的抱負,寫一個讓自己用的腳本,結果越寫, bug 越多,,,多到我自己都不會改了。。。
從多線程批量掃描式,刪到單線程批量,再繼續刪到單個網站外接式探測,再繼續刪到單個網站內接式探測,,,,最後全刪完了。。。
恩,然後瞎幾把寫了一個純屬娛樂的還誤報很多的垃圾小腳本。。。
# (幸虧我不是程序員啊!要不然真的成了,錢多,話少,還 ④ 的早的段子了。。。)
# -*- coding:utf-8 -*-nn# 導入 request 模塊nimport requestsn# 把需要探測的文件放到這個列表裡,並賦值給 mulu nmulu = [/.git/config, /.svn/entries, web.rar, www.rar, wwwroot.rar, 1.rar, bbs.zip, website.rar]nprint - - - - - - - - - - - - - - - - - - - - - # 沒啥用nprint u| 這是一個很娛樂的源碼泄露探測腳本 |# 沒啥用nprint - - - - - - - - - - - - - - - - - - - - - # 沒啥用n# 用來輸入需要探測的網址ndizhi = raw_input(請輸入URL地址:.decode(utf-8).encode(gbk))n# 把列表裡的元素一個一個遍歷出來nfor a in mulu:nt# 把網址和探測的文件連接到一起n tance = "%s/%s" % (dizhi, a)n # print tance 這一行是我看看到底連接到一起了沒的。。。nt# 使用 request 模塊里的 get 來獲取這個網址n qq = requests.get(url=tance)nnt# 獲取響應碼並賦值給 dqn dq = qq.status_codent# 判斷響應碼是否為 200 ,是,就進行下一步n if dq == 200 :ntt# 輸出 響應碼和探測地址n print u"響應碼:[%s] - 地址:%s" % (dq, tance)nt# 如果響應碼不是 200 就進行著一步n else:nt# 輸入響應碼和地址n print u"響應碼:[%s] - 地址:%s" % (dq, tance)n
來,開始玩一玩這個垃圾腳本 (*^__^*) 嘻嘻……
恩,測試測試 離心小姐姐 的博客吧? #(斜眼笑...)請輸入URL地址:http://www.lsafe.orgn
完 ...
推薦閱讀: