標籤:
寂寞如雪的用腦過度,所以來寫個部落格分享一下。#雖然上一篇部落格我還沒寫完
SVN的弱密碼,看起來很複雜,但實際上很簡單啊= =雖然不像pymssql/mymssql這種,Python提供了很好用的包,但如果瞭解其中的原理就很簡單了~~
0x00 基本認知
首先要知道如所示的認證方式是什麼認證:
這個涉及到HTTP認證方式,具體可以參考 http://blog.csdn.net/samlei/article/details/5485305
SVN用了最簡單的Basic Auth。Basic Auth的利用非常廣泛,比如Phpmyadmin的http認證方式,nodejs express架構裡的basic-auth的外掛程式等等。
0x10 判斷當前請求是否需要認證
如果當前請求要求認證,在瀏覽器中,會彈出如所示的視窗,那如果在指令碼中,如何判斷?可以通過HTTP Response的頭來驗證:
import requestsres = requests.get(‘https://test.com/myspace‘, verify=False)print res.headers
可以看到頭部中包含了下面這個欄位:
‘www-authenticate‘: ‘Basic realm=" Subversion"‘
0x20 如何認證
針對basic-auth有兩種方法:
1. 在HTTP頭中添加Authorization
Authorization: "Basic 使用者名稱和密碼的base64加密字串"
2. url中添加使用者名稱和密碼
http://user:[email protected]
0x30 python Requests中的認證模組
在寫這篇部落格,查資料的過程,發現了神器requests竟然包含了認證模組。#雖然0x20中提到的認證方式也很簡單。
import requestsfrom requests.auth import HTTPBasicAuth r = requests.get(‘https://httpbin.org/hidden-basic-auth/user/passwd‘, auth=HTTPBasicAuth(‘user‘, ‘passwd‘))# r = requests.get(‘https://httpbin.org/hidden-basic-auth/user/passwd‘, auth=(‘user‘, ‘passwd‘)) # 簡寫print(r.json())
0x40 最終代碼
def svn_busrt(self, url, user, password): try: res = requests.get(‘https://‘+user+‘:‘+password+‘@‘+url, verify=False, timeout=30) except Exception, e: print Fore.RED + "Connection Error" self.count += 1 return if res.status_code == 200: print Fore.GREEN + "[+] Success! %s\t%s:%s" % (url, user, password) result_list.append([user, password])
SVN弱密碼掃描(Python)