基于百度OCR-文字識別的驗證碼暴力破解
0x01 前言
在之前的學習中,我們學習過暴力破解的方法,比如暴力破解藍奏云的密碼.理論上講,只要字典足夠,和方法正確.暴力破解總能出現我們想要的效果.但是在真實的環境中,我們在進行密碼猜解的時候,總會遇到一些驗證碼的阻攔.比如下方這種情景

當字典準備充足的情況下,如何正確的自動化的識別驗證碼,是我們要思考的問題.
0x02 正文
1.準備條件
BurpSuite插件captcha-killer:https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2
演示爆破網站
百度云OCR平臺賬戶
2.插件導入
在BurpSuite的Extender模塊中,點擊Add,將下載的captcha-killer.jar文件導入

此時可以看到BurpSuite的欄目里多了一塊選擇:Captcha-Killer,插件導入成功。

3.驗證碼抓取
在測試頁面隨意輸入賬戶名和密碼及驗證碼,使用BurpSuite,進行抓包,抓取頁面如下:

將抓到的數據包發送到Intruder模塊,一會兒進行重放爆破.
然后點擊forward,尋找獲取驗證碼的數據包,找到一個數據包,其中包含captcha,懷疑是獲取驗證碼的數據包

右擊找到captcha-killer,發送到captcha-panel,點擊獲取,成功找到驗證碼,驗證碼抓取成功.

4.百度OCR識別
在Request Template中右擊選擇模版庫,找到百度OCR,我們通過使用captcha-killer自帶的模塊進行識別,但是調用百度OCR識別需要Access_token,將我們在百度OCR中獲得的access_token修改進數據包中去,即可自動識別驗證碼.

4.1領取免費資源
進入百度OCR:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index[1],首先領取免費的資源,這樣可以幫助我們識別一些文字類型的驗證碼,也可以按量計費購買一些流量

4.2 創建應用
領取完免費資源或者購買了一些服務后點擊創建應用,選擇應用歸屬為個人,創建成功后出現如下列表,可以看到創建的應用被分配了API KEY和Secret Key

通過API KEY 和 Secret Key我們需要獲取到調用此應用的Access Token
4.3 Token 獲取
根據開發文檔,我們構造如下語句
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[你的API KEY]&client_secret=[你的Secret Key]'
將API KEY 和Secret KEY代換進去(注意沒有中括號),在Linux命令行中執行,成功返回來了就json數據,找到Access token

4.4 驗證碼識別
將Access_token復制進captcha-killer,點擊識別,成功識別到驗證碼

4.5 識別驗證碼的暴力破解
在識別成功后,將識別到的結果選中,右擊中標記為識別結果
回到Intruder模塊,我們本次試驗選擇用戶名不變,猜解密碼的模式,于是設置Intruder模塊中的兩個變量作為參數,一個是密碼,另一個是驗證碼.選擇PitchFork模塊

將password中的內容導入字典

而將captcha中內容選擇為Extension-generated,通過captcha-killer生成.

由于百度OCR的特點,爆破速度不能太快,所以我們選擇以更慢的速度來進行暴力破解

點擊Start Attack,成功進行暴力破解,繞過驗證碼成功!

0x03 總結
在滲透測試的過程中,登錄框中遇到驗證碼是很常見的一件事情,所以大家一定要掌握驗證碼識別這個技巧,有時候百度OCR可能識別精度不高,也歡迎大家嘗試別的OCR平臺的方法,可以一起交流!