滲透測試===使用BURPSUIT暴力破解某網站的手機驗證碼

 

手機短信驗證是企業給消費者(用戶)的一個憑證,經過手機短信內容的驗證碼來驗證身份。主要用來用戶註冊,找回密碼,用戶登陸等等做爲強身份認證。javascript

目前驗證碼的格式主要是數字,從4位到6位不等。通常來講驗證碼都有有效週期2~10分鐘,甚至更長,超過有效週期驗證碼自動失效。php

那麼若是要想在有效的時間裏爆破驗證碼必須多線程。假設驗證碼是4位,從0000~9999的10000種可能用多線程在3分鐘內跑完並非很難。html

用到的工具是burpsuit。該工具屬於輕量級滲透工具,在kali-linux的300多種工具中,一直top10以內。java

首先找到一個驗證碼是4位的網站。(4位數的手機驗證碼在不少網站中繼續被使用)linux

1

該網站有作驗證,可是改驗證措施只是對驗證碼發送量作控制做用,防止無限制觸發發送驗證碼。對咱們破解它的驗證碼絲毫無影響。json

使用burpsuit工具對它進行抓包,結果以下:api

POST /api/check_telcode.php?mobile=18XXXXXXXXX HTTP/1.1
Accept: application/json, text/javascript, */
; q=0.01
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: https://user.xxxxxxxxxx.html
Accept-Language: zh-CN
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko
Host: user.xxxx.com
Content-Length: 23
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=qreb11hclishnh0i24odm7la27; _uab_collina=155081416244717379002547; nb-referrer-hostname=user.XXXXX.com; nb-start-page-url=https%3A%2F%2Fuser.XXXXX.com% .....etc.....
param=9999&name=telcode*多線程

抓包以後,使用intruder功能對其進行暴力破解。分析完請求數據後發現,這一步的post請求只有兩個參數。app

param=9999&name=telcodeide

param=9999是咱們剛纔輸入的錯誤的驗證碼(此時正確的驗證碼雖已發送,但咱們並不知道),name字段就能夠忽略了。
在intrude界面中Positions選項卡,設置爆破點:

2

根據驗證碼的規則,設置爆破數據。(若是是爆破登錄密碼,能夠從網上下載密碼庫文件。好比SecLists-master就收錄了top100-top1000000的經常使用弱密碼)由於是從0000~9999的純數字。因此設置以下:

3

設置線程爲5:
4

開始破解,結果以下:
5

全部其餘驗證碼返回length都是477,惟獨只有一個length是401。

憑直覺,這個數據應該就是驗證碼了。這時候再看手機上收到的驗證碼做爲一個驗證。

6

發現和收到的驗證碼徹底一致。而整個破解過程其實很快還沒等全部數據跑完。就基本能肯定驗證碼是多少了。
爆破時間還不到1分鐘。

到這一步就沒再繼續了。

總結:1. 四位數的驗證碼10000位,而六位數的驗證碼1000000位。單從爆破時間上來看就比4位數的多100被。因此在驗證碼的有效期內基本很小几率能破解驗證碼。2. 儘量的縮短驗證碼的有效時間下降破解風險。四位數的驗證碼所有爆破完基本超不過5分鐘。3. 增長驗證碼校驗的驗證,上述案例中雖然有驗證。但並非針對驗證碼的驗證。4. 對訪問請求的控制。短期內若是出現同一Ip的大量請求,能夠將其儘量的控制。

相關文章
相關標籤/搜索