驗證碼、token、介面
主要進行一個工具的演示,我們在爆破或者批量註冊的時候,如果對方有輸入驗證碼進行驗證的,比如字母、數字+字母這種的,我們可以使用抓包工具burpsuite的一個外掛進行實現。
一.captcha-killer外掛的使用
1.下載外掛:
下載地址:https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2
下載箭頭所標註的地方
2.安裝外掛
開啟burpsuite,點選extender下面的Extensions,然後點選新增,然後新增我們下載好的captcha-killer檔案,點選下一步,然後關閉,就可以了。具體演示如圖所示:
接下來我們就可以看到功能後面多了一個captcha-killer,如果沒有顯示,看一下是否勾選。
3.使用工具
安裝成功以後,我們就要使用這個工具了。我在網上隨便找了一個有這個驗證的網站,宣告:只做該工具的演示,不對該網站進行任何侵入違法活動。望閱讀此篇的讀者珍惜自己的自由之身,切不可觸碰紅線。
如圖所示,上面是有賬號、密碼、驗證碼。假設我們在前期的資訊收集中知道了這個賬號,現在我們就對密碼進行爆破,他這個爆破一次驗證碼就會重新整理一次。可以使用我們的這個小外掛。
1>右擊圖片,開啟圖片地址進行抓包,將抓到的包傳送到captcha-killer目錄下。(注意是圖片地址的資料包)
由於我是找的真實案例,所以打個碼。然後我們點選captcha-killer,就可以發現資料包已經傳送過去了。點選獲取,大家可以看到已經獲取到了驗證碼
2>配置識別埠
花錢的比免費的強很多,如果有必要可以花錢搞一下
3>實戰
將登陸請求的資料包抓到,action到Intruder。攻擊模式選擇pitchfork
然後清除,payload1正常設定(參考越權漏洞(二)),payload2選擇Extension-generated - > select generator -> captcha-killer.執行緒要設定為1,如圖
最後就可以了,一直跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑,最最後發現爆破失敗。一般情況下爆破的可能性不大,但是存在一定機率。萬一就破了呢。這只是說能提供一個思路。
二.驗證碼的繞過、複用
在我們進行爆破的時候,會有這個驗證碼驗證。一種情況是驗證碼是本地驗證,這種情況的驗證碼形同虛設,因為只要本地通過就可以,服務端是不會驗證的,所以直接抓包,進行爆破,跑就完事了。
第二種情況是驗證碼在服務端驗證,但是可以重複使用,比如第一次登入的時候驗證碼是1234,那麼在第二次輸入的時候還是1234,就是驗證碼沒有銷燬,一直存在。當然,這種情況是在資料包中看到的。我們們主要說一下這種情況,因為這種情況是稍微比較常見的。
1.驗證碼複用真實案例
思路
首先我們看到這個圖片的時候,應該想到的:驗證碼是否可以繞過、驗證碼是否可以複用,如果都不能可以使用captcha-killer。因為我已經測試了,不能繞過。我們直接看是否可以複用
驗證
1>我們先抓一個正確驗證碼的資料包,看一下回顯。(將抓到的資料包傳送到repeater下
點選send
我們可以看到回顯會提示密碼不正確。
2>我們再抓一個驗證碼錯誤的資料包,看他的回顯。
這是他的一個回顯,意思是正確的驗證碼是。。。。你輸入的驗證碼是。。。。。他會提示這個
3>接下來我們抓一個輸入正確驗證碼的資料包,修改輸入的密碼,看他會提示什麼,如果沒有驗證碼複用,他應該會提示驗證碼錯誤,回顯為步驟2,如果存在驗證碼複用,那麼回顯為步驟1
說明存在驗證碼複用情況,然後就可以進行爆破。
漏洞原理:服務端驗證的時候沒有將已經使用過的驗證碼銷燬
防護:將使用過的驗證碼進行銷燬,重新驗證。使用滑動驗證,選圖驗證等等
三.介面安全問題
主要有呼叫、遍歷、未授權、篡改等
呼叫案例:簡訊轟炸(前面介紹過)
遍歷案例:UID等
callbake回撥JSONP(用微信介面,然後又給網站進行回撥,可能存在跨站漏洞)
引數篡改:墨者靶場(已演示)
四.Token
Token的引入:Token是在客戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的背景下,Token便應運而生。
Token的定義:Token是服務端生成的一串字串,以作客戶端進行請求的一個令牌,當第一次登入後,伺服器生成一個Token便將此Token返回給客戶端,以後客戶端只需帶上這個Token前來請求資料即可,無需再次帶上使用者名稱和密碼。
使用Token的目的:Token的目的是為了減輕伺服器的壓力,減少頻繁的查詢資料庫,使伺服器更加健壯。
參考連結:https://www.jianshu.com/p/24825a2683e6
由上面的簡單介紹,我們可以可出,如果有這個token,爆破難度會增加,甚至沒法爆破,因為token請求一次,就會改變一次。你可以再資料包中一直變換,但是如何解決這個token問題,因為,token不變那麼請求的還相當於同一個資料包。那麼如何解決這個問題? 猜測(一般不可能)如果它存在這個邏輯漏洞,那麼token就會在前端回顯出來。具體看下面:
1>抓包
將抓取的資料包傳送到intruder下,將密碼和token值選中作為爆破,進行新增
將sniper換成pitchfork
2>設定字典
1.第一個payload是密碼,還按之前的那樣匯入字典、、、、第二個payload是token
2.首先點選options,將執行緒設定為1,這個只能一個一個的提交,因為是回顯出來token,然後token才可以提交,如果多執行緒,提交的多了token取誰的。
3.向下滑,選擇這個經常
4.然後選擇這個add
5.看到資料包,選中資料包中的token值,點選ok就可以了。
6.在payload中選擇recursive grep.
7.最後傳送資料包就可以了