業務安全漏洞-登錄認證實戰總結(二)
1.驗證碼復用
漏洞描述
當服務器端受理請求后,沒有將上一次保存的session及時清空,將會導致驗證碼可重復使用
通常情況下在網站注冊、登錄、找回密碼等頁面都會設計驗證碼驗證。如果設計不合理,將會刀子驗證碼在驗證成功一次之后,下次使用的就不在驗證也就說可以重復使用。
案例:
可以看到此處前端登錄雖有驗證碼驗證,但是只驗證一次。后續可一直使用該驗證碼。
測試方法:發送到repeater模塊多次發包,查看是否提示驗證碼錯誤。
第一次發包:

第二次發包:
提示驗證碼錯誤

第三次發包輸入頁面已經更新后的驗證碼,發現不在提示驗證碼錯誤

第四次發包同樣不提示,此時驗證碼就已失效,可造成暴力破解

修復建議
當服務器端處理完一次用戶提交的請求之后,及時將 session域中的驗證碼清除,并生成新的驗證碼。
2.驗證碼為空繞過
當驗證碼為空時,則不進行驗證碼驗證。在進行測試也可以試試null 有時會有意外收獲


3.token可預測
當我們進行重復發包時,提示token錯誤,說明token已過期

但是在返回包中,我們可以看到重新生成的token,由此漏洞產生

破解模塊設置

給第一個添加字典

在options設置響應token

重定向設置 總是,線程設置為1


Pyload設置遞歸搜索,給定一個初始token

開始暴力破解,成功解出

4.驗證碼過于簡單可被識別

使用到的工具:Pkav HTTP Fuzzer 1.5.6

將抓到的數據包填入工具中設置

此處設置字典

驗證碼設置:
驗證碼地址,清晰的數字

點擊識別測試

重放選項設置,302重定向,長度固定4位

出現驗證碼錯誤重試

開始發包

5.登錄認證繞過
漏洞描述:
有的登錄頁面可以通過禁用js樣式(不常見),能輕易的繞過登錄認證,直接進入系統。或者是通過burp抓報改包進行登錄繞過也是可以的(常見一點)
示例:
設置攔截響應包:

開啟攔截:



把302 found改成200

成功登錄

風險分析
如果應用程序在認證上沒有做好,可以導致惡意用戶或者攻擊者繞過認證,訪問內部資源,這類漏洞通過防火墻和入侵檢測系統很難預防。
修復方案
可從以下幾個方面預防認證繞過:
增加驗證碼,不使用前端驗證,密碼通過加密算法加密,失敗次數多加鎖,密碼強度增加
6.短信驗證碼可暴力破解
漏洞描述
短信驗證碼位數太短或有效期太長導致可暴力破解
測試方法:
點擊發送短信驗證碼,輸入任意驗證碼,提交請求,使用burpsuite攔截請求,在intruder模塊設置驗證碼參數為枚舉變量,這是payload類型為numbers,對驗證碼進行暴力破解。

修復方案
- 短信驗證碼不少于6位;
- 有效期不超過1分鐘;
- 驗證碼錯誤次數超過上限應采取賬戶鎖定策略。
7.XSS跨站腳本漏洞
漏洞描述
跨站腳本攻擊的英文全稱是Cross Site Script,為了和樣式表區分,縮寫為XSS。發生的原因是網站將用戶輸入的內容輸出到頁面上,在這個過程中可能有惡意代碼被瀏覽器執行。
跨站腳本攻擊,它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執行,從而達到惡意用戶的特殊目的。已知的跨站腳本攻擊漏洞有三種:
- 存儲式
- 反射式
- 基于DOM
測試方法:
1、GET方式跨站腳本:
在輸入的參數后逐條添加以下語句,以第一條為例,輸入http://www.exmaple.com/page.xxx?name=
文本輸入框:需要對頁面上所有可以提交參數的地方進行測試。具體跨站腳本的測試語句根據實際情況的不同而不同,可自行構造,以及觸發事件等切換,這里只列出了一些最常見構造語句。
示例:登錄窗口驗證碼處存在反射型XSS注入

點擊登陸,成功彈出內容

風險分析
攻擊者可以使用該漏洞構造釣魚鏈接,誘騙受害者訪問并填寫用戶名和密碼,從而竊取用戶的認證憑據
修復方案
1、總體修復方式:驗證所有輸入數據,有效檢測攻擊;對所有輸出數據進行適當的編碼,以防止任何已成功注入的腳本在瀏覽器端運行。