簡訊身份驗證的安全風險

2022-09-15 12:24:13 字數 1896 閱讀 4316

賬戶接管

這個是簡訊身份驗證最嚴重的安全風險,攻擊者可以竊取任意使用者的賬戶,甚至是事先不知道使用者的手機號碼

使用者模擬

與上面的類似,但是這個的風險取決於具體的服務。通常,如果可以進行模擬,由於確認機制相同,因此也有可能竊取已註冊的帳戶。

簡訊轟炸

簡訊轟炸可以針對客戶或任何其他人。易受攻擊的web應用程式的身份驗證介面用於傳送訊息。對於web服務本身,轟炸可能導致客戶忠誠度和聲譽受損。

資源枯竭

這裡是指,web介面為了傳送簡訊,需要連線到簡訊服務的提供商,而後者會對每條訊息進行收費,因此,簡訊轟炸期間,簡訊驗證碼介面的賬戶餘額可被消耗殆盡。

驗證碼傳送次數限制

這種機質可能會引起使用者無法正常登陸,或者無法完成身份驗證。

驗證碼傳送次數限制繞過

錯誤次數限制

這個是簡訊驗證碼爆破的最常見的安全風險,目前大多數簡訊驗證碼都是4-6位純數字,最多的請求次數字100萬,這針對於現代web服務來說並不算多。

針對錯誤次數限制繞過

驗證碼生效時間限制

在某些時候,錯誤次數不受限制,但是驗證碼生效時間很短,比如三分鐘生效時間,三分鐘內傳送100萬個請求還是很難的。但是這裡驗證碼生效時間在**實現上根本沒有限制。因為應用程式在傳送驗證碼的時候傳送了相同的驗證碼

顯然,開發人員認為,如果沒有輸入之前的驗證碼,那麼驗證碼就還算是安全的,可以不用再次生成。因此我們可以在2.5到3分鐘之間再次傳送請求,接受驗證碼,即可繼續爆破。

相同的驗證碼用於不同的動作

比如註冊使用者處的驗證碼次數不受限制,而且他的驗證碼可以用來進行另一項操作,比如使用者登陸。我們可以先在使用者登陸處讓應用程式傳送乙個驗證碼,然後給註冊使用者接受驗證碼的api處傳送驗證碼,當驗證碼正確的時候,程式會返回「該使用者已註冊」,然後我們在使用此驗證碼進行登陸,來入侵任何使用者的賬戶。

不安全的隨機數

驗證碼本身必須是隨機的不可**的。如果驗證碼可**(例如取決於 unix時間的當前秒 )則任何使用者都可以被入侵

我們發現的錯誤之一是,導致此漏洞的原因不在於驗證碼,而在於傳送驗證碼時候會給每個驗證碼分配乙個全域性識別符號,當給任何使用者傳送驗證碼的時候該識別符號都會遞增。

當使用者傳送驗證碼進行驗證時候,以下的json請求就會傳送到伺服器

我們則可以嘗試登入或註冊的其他使用者,然後傳送不正確的確認**獲取到verification_code_id值,然後將當前值遞增並且傳送驗證請求。從而阻止其他使用者並導致拒絕服務

使用者封鎖

前面描述的漏洞和相應的攻擊是dos攻擊的特例

如果在超出錯誤次數限制或者傳送驗證碼次數時阻止了使用者帳戶,則可能會大量拒絕服務:攻擊者可以簡單地對每個客戶端進行幾次不成功的身份驗證嘗試,從而阻止所有帳戶。當然,為此,他需要知道他們的**號碼或登入名。

簡訊轟炸

簡訊傳送次數顯示限制不僅應限制使用單個**號碼登入的嘗試次數,還應限制對整個應用程式的請求次數,因為攻擊者可能嘗試不對特定使用者執行洪水攻擊,而是大規模執行,以破壞服務本身(觸發dos或耗盡資金)。

這裡會涉及到兩種型別,只針對某一使用者傳送大量的驗證碼;還有一種是針對大量使用者傳送驗證碼。(國內大部分都是不收取此類漏洞的)

簡訊嗅探

通過簡訊傳送驗證碼是不安全的,攔截方式有很多種。雖然通常這些都不是web服務本身的弱點引起的,但是在開發時有必要考慮此類攻擊的風險。

Forms 身份驗證

配置應用程式使用 forms 身份驗證 如果應用程式的根目錄中有 web.config 檔案,請開啟該檔案。複製 在system.web元素中,建立乙個authentication元素,並將它的mode屬性設定為 forms,如下面的示例所示 複製 在authentication元素中,建立乙個fo...

WebService身份驗證

web service身份驗證解決方案一 通過通過soap header身份驗證。1.我們實現乙個用於身份驗證的類,檔名mysoapheader.cs mysoapheader類繼承自system.web.services.protocols.soapheader。且定義了兩個成員變數,userna...

WebServices身份驗證

最近遇到乙個問題,暴露在網路上的web service如何做身份驗證,而不被其他人說是用。mysoapheader.cs類 using system using system.collections.generic using system.linq using system.web namespa...