svn信息泄漏探測工具(新手學python)
快放假了,比較閑,寫了個svn信息泄漏的探測工具,嚴格意義上說和wwwscan功能差不多,判斷是否存在/.svn/等目錄,貼上代碼:
#coding:utf-8 import sys import httplib2 if len(sys.argv)<2: print 'Usag:'+"svnscan.py"+" host" sys.exit() #判斷輸入url是否是http開頭 if sys.argv[1].startswith('http://'): host=sys.argv[1] else: host="http://"+sys.argv[1] #訪問一個不存在的目錄,將返回的status和content-length做為特征 status='' contentLen='' http=httplib2.Http() dirconurl=host+'/nodirinthiswebanx4dm1n/' dirresponse=http.request(dirconurl,'GET') status=dirresponse[0].status contentLen=dirresponse[0].get('content-length') #字典中保存svn的常見目錄,逐個訪問和特征status、content-length進行比對 f=open(r'e:\svnpath.txt','r') pathlist=f.readlines() def svnscan(subpath): for svnpath in pathlist: svnurl=host+svnpath.strip('\r\n') response=http.request(svnurl,'GET') if response[0].status!=status and response[0].get('content-length')!=contentLen: print "vuln:"+svnurl if __name__=='__main__': svnscan(host) f.close() |
svnpath.txt文件中保存的常見的svn版本控制的目錄路徑等,借鑒了某大嬸的思路,根據返回的狀態碼、content-length跟一個不存在的目錄返回的狀態碼、content-length進行比對,主要目的是確保判斷的準確性,因為有些站點可能會有404提示頁等等。
目前只能想到的是存在svn目錄,且權限設置不嚴格的,所以這個程序應該是不能準確判斷是否存在漏洞,只能探測是否存在svn的目錄。
不知道還有其它的辦法來確認一個站點是否存在svn目錄?目錄瀏覽返回的狀態應該也是200?還是有另外的狀態碼?
posted on 2014-12-23 00:02 順其自然EVO 閱讀(534) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄