Python編寫暴力破解模組,破解驗證碼!
驗證碼識別&暴力破解
1. 前言
作為一名努力工作的滲透實習生,這段時間在處理滲透工作的時候發現,弱口令是進入網站最簡單、最有效、危害重大的漏洞之一,但常常暴力破解使用者名稱時會發現存在討厭的驗證碼,讓我們從而無法進行滲透工作。所以,這倆天寫了幾行程式碼可以簡單的識別驗證碼並進行暴力破解,算是個人總結吧,大牛們繞過就好。
2. 準備工作
在滲透測試中我們需要收集一些有用的資訊,比如網站存在的使用者名稱,如圖2.1所示,在找回密碼處可以遍歷使用者名稱,使用Burp抓包從返回包中可以看到使用者名稱是否存在。但同時也可以看到有驗證碼的存在,我們無法進行暴力破解,所以我們需要識別驗證碼並加入字典進行暴力破解
圖2.1
3. Python程式
3.1 整體思路
3.1.1 訪問該網站頁面,爬取頁面存在的驗證碼資訊和跳轉的地址(點選下一步訪問的地址)。
3.1.2 識別驗證碼,加入驗證碼和使用者名稱字字典請求訪問。
3.1.3 從放回包中判斷是否暴力破解成功,打印出存在的使用者名稱。
3.2 python識別驗證碼
將驗證碼下載到本地,命名為code.jpg
from PIL import Image
import pytesseract
python中使用Image,pytesseract識別存在的驗證碼
成功識別出存在的驗證碼 7KKV
3.3 爬取驗證碼資訊和跳轉地址
3.3.1 訪問該網址連結,使用firebug檢視頁面原始碼發現存在的驗證碼地址和跳轉的地址,我們需要載入使用者名稱字典和識別出來的驗證碼進行訪問。
3.3.2 Python識別驗證碼和下一次請求的地址
使用requests模組進行第一次訪問,通過檢視原始碼,進行正則匹配得到驗證碼地址和跳轉的地址,將驗證碼儲存到本地,識別驗證碼並返回
3.3.3 載入使用者名稱字典,進行暴力破解
定義使用者字典函式,返回users列表
抓包分析資料包,為post請求
通返回包中,如果使用者名稱錯誤或驗證碼錯誤,會出現titleNoteError欄位,如果正確則沒有該欄位。
編寫暴力破解模組
加入多執行緒,優化破解速度
完整程式碼
存在的使用者名稱