Pikachu-暴力破解--驗證碼繞過


驗證碼:

  • 一般用驗證碼來進行登錄暴力破解;防止機器惡意注冊
  • 驗證碼的認證流程:
  1. 客戶端request登陸頁面,后台生成驗證碼:后台使用算法生成圖片,並將圖片response客戶端;同時將算法生成的值全局賦值存到SESSION中。
  2. 校驗驗證碼:客戶端將認證信息和驗證碼一同提交;后台對提交的驗證碼與SESSION中的進行比較;
  3. 客戶端重新刷新頁面,再次生成新的驗證碼:驗證碼算法中一般包含隨機函數,所以每次刷新都會改變。

不安全的驗證碼-on client常見問題:

  • 使用前端js來實現驗證碼;
  • 將驗證碼在cookie中泄露,容易被獲取;
  • 將驗證碼在前端源代碼中泄露,容易被獲取。

不安全的驗證碼-on server常見問題:

  • 驗證碼在后台不過期,導致長時間可以被使用;
  • 驗證碼校驗不嚴格,邏輯出現問題;
  • 驗證碼設計的太過簡單和有規律,容易被猜測。

驗證碼繞過(on client):

  1.打開Pikachu中的暴力破解--驗證碼繞過(on client)

  2.驗證是否存在暴力破解的可能。隨便輸入賬號和密碼,當我們不輸入驗證碼時,會提醒我們輸入驗證碼;當輸入錯誤的驗證碼時,會提醒驗證碼錯誤。接下來輸入正確的驗證碼,提示用戶名或者密碼不存在

  3.進行抓包。請求的是POST數據,我們發現多了一個驗證碼

  4.查看源碼,我們發現驗證碼的生成是在前端中實現的。在前端中用js來做驗證碼是不安全的,很容易被繞過

 

  5.分析抓到的數據包。將抓到的數據包發送到bp的Repeater模塊,我們對數據進行驗證。修改驗證碼,將驗證碼隨意修改為不存在的或者為空,我呢發現只會提示用戶名或密碼不存在,並不會提示驗證碼錯誤或請輸入驗證碼。所以說這個驗證碼是通過前端中的js來實現的

  6.我們將數據包發送到Intruder模塊並對默認的變量進行清除

   7.我們將賬號和密碼設置成變量,此時的驗證碼並沒有社么作用,所以不用設置成變量。設置暴力破解方式

  8.設置payloads和options與之前相同,進行暴力破解,我們發現賬號是admin密碼是123456的長度與其他的長度不相同,並且在response中顯示登陸成功

驗證碼繞過(on server):

  1.打開Pikachu中的暴力破解--驗證碼繞過(on server)

  2.確認驗證碼的有效性。當不輸入驗證碼或者輸入驗證碼錯誤時,會提示

  3.隨便輸入賬號和密碼並輸入正確的驗證碼,進行抓包

  4,將抓到的數據包發送到repeater模塊中,修改驗證碼,看后台是否對驗證碼進行了驗證。提交驗證碼為空,返回提示如下

  5.輸入一個錯誤的驗證碼,提示如下。說明后台對驗證碼進行了驗證

  6.接下來驗證驗證碼是否存在不過期的問題。刷新頁面,獲取新的驗證碼9vrsyg,不在前台進行登錄,我們將新獲取到的驗證碼輸入到剛剛抓到數據包中,此時我們輸入的是正確的驗證碼,應該返回用戶名和密碼不正確,返回結果與我們猜想的一樣

  7.更改用戶名或者密碼的其中一個,正常的應該返回驗證碼不正確;然而返回的結果卻與之前的相同,均為賬號或者密碼不正確。這說明驗證碼被重復使用,存在不過期的問題,所以我們就可以進行暴力破解。

  8.接下來進行暴力破解,操作與之前相同。將數據包發送到Intruder模塊,選擇爆破方式,注意此時的驗證碼應填寫正確的驗證碼,使用剛剛刷新得到的驗證碼

   9.設置payloads,進行暴力破解。發現賬號為admin密碼為123456的長度與其他長度不同。即得到正確的賬號和密碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM