【安全】Web應用常見業務邏輯漏洞

1 短信炸彈

  • 漏洞描述

短信轟炸攻擊是常見的一種攻擊,攻擊者通過網站頁面中所提供的發送短信驗證碼的功能處,通過對其發送數據包的獲取後,進行重放,如果服務器短信平臺未做校驗的情況時,系統會一直去發送短信,這樣就造成了短信轟炸的漏洞。

  • 滲透測試
  1. 手工找到有關網站註冊頁面,認證頁面,是否具有短信發送頁面,如果有,則進行下一步。
  2. 通過利用burp或者其它抓包截斷工具,抓取發送驗證碼的數據包,並且進行重放攻擊,查看手機是否在短時間內連續收到10條以上短信,如果收到大量短信,則說明存在該漏洞。
  • 風險評級:
  1. 可對任意手機號轟炸判定爲高風險
  2. 只可對當前手機號轟炸或單個手機號碼做了限制,但變換手機號碼仍然可以不斷髮送的,判定爲低風險。
  • 安全建議
  1. 合理配置後臺短信服務器的功能,對於同一手機號碼,同一驗證發送次數不超過5-10次,且對發送時間間隔做限制
  2. 當發送超過一定次數(可以爲0),加入驗證碼驗證。

2 郵件炸彈

  • 漏洞描述

應用系統未限制郵件的發送次數和頻率,造成短時間內大量郵件發送至接收者郵箱,造成大量垃圾郵件。

  • 滲透測試
  1. 手工找到有關網站註冊頁面,認證頁面,是否具有郵件發送頁面,如果有,則進行下一步
  2. 通過利用burp或者其它抓包截斷工具,抓取發送郵件的數據包,並且進行重放攻擊,查看郵箱是否在短時間內連續收到10封以上郵件,如果收到大量郵件,則說明存在該漏洞
  • 風險評級:
  1. 可對任意郵箱轟炸,判定爲高風險。
  2. 只可對當前郵箱轟炸,判定爲低風險。
  • 安全建議
  1. 合理配置後臺郵件服務器的功能,對於同一郵箱,同一驗證發送次數不超過5-10次,且對發送的時間間隔做限制。
  2. 當發送超過一定次數(可以爲0),加入驗證碼驗證。

3 短信定向轉發

  • 漏洞描述

短信接收人可任意指定

  • 滲透測試

攔截髮送短信的請求,將手機號改爲測試人員的手機號,測試是否可接收短信驗證碼。

  • 風險評級:高風險
  • 安全建議
  1. 發送短信時手機號從當前會話中獲取,避免從前端傳入
  2. 用戶的手機號不能隨意變動,需要認證過程。

4 郵件可定向轉發

  • 漏洞描述

應用系統發送郵件的接收人可由客戶端任意指定

  • 滲透測試

攔截髮送郵件的請求,將接收人郵箱改爲測試人員的郵箱地址,測試是否可接收郵件。

  • 風險評級:高風險
  • 安全建議
  1. 發送郵件時郵箱從當前會話中獲取,避免從前端傳入
  2. 用戶的郵箱不能隨意變動,需要認證過程。

5 任意用戶密碼修改/重置

  • 漏洞描述

可通過篡改用戶名或ID、暴力破解驗證碼等方式修改/重置任意賬戶的密碼。

  • 滲透測試

密碼修改的步驟一般是先校驗用戶原始密碼是否正確,再讓用戶輸入新密碼。

修改密碼機制繞過方式大概有以下三種:

  1. 如果輸入新密碼的接口可以直接訪問,那麼在未知原始密碼的的情況下即可直接修改密碼,通常知道了他人的用戶名即可任意修改他人的密碼。
  2. 如果系統未校驗修改密碼的用戶身份,那麼在提交修改密碼請求時,攻擊者通過輸入密碼,將用戶名或者用戶ID修改爲其他人的,即可成功修改他人的密碼。
  3. 當修改密碼時系統需要電子郵件或者手機短信確認,而應用程序未校驗用戶輸入的郵箱和手機號,那麼攻擊者通過填寫自己的郵箱或手機號接收修改密碼的鏈接和驗證碼,以此修改他人的密碼。

密碼重置機制繞過攻擊方式主要有以下兩種:

  1. 通過正常手段獲取重置密碼的鏈接,猜解鏈接的組成結構和內容(如用戶名或者時間戳的MD5值)。在得知他人郵箱的情況下,構造重置他人密碼的鏈接。
  2. 在得知他人手機號的情況下,通過窮舉手機驗證碼重置他人的密碼。
  • 風險評級:高風險
  • 安全建議
  1. 一次性填寫校驗信息(原始密碼、新密碼等)後再提交修改密碼請求
  2. 對客戶端提交的修改密碼請求,應對請求的用戶身份與當前登錄的用戶身份進行校驗,判斷是否有權修改用戶的密碼
  3. 使用手機或郵箱進行驗證時,要與修改密碼的用戶一一對應,且驗證碼僅一次有效,驗證之後即失效,避免暴力破解
  4. 對原始密碼進行了驗證的情況下,限制輸入原始密碼的錯誤次數,防止攻擊者暴力破解原始密碼
  5. 重置密碼鏈接中的關鍵信息應隨機化,不可預測(例如token機制),且禁止將關鍵信息返回到客戶端

6 SSO認證缺陷

  • 漏洞描述

SSO認證存在缺陷,可越權登錄他人賬戶。

  • 滲透測試

1、信息傳輸缺乏安全保證

SSO認證通信過程中大多數採用明文形式傳送敏感信息,這些信息很容易被竊取,致使重要信息泄露。另外,在通信過程中大多數場景沒有對關鍵信息進行簽名,容易遭到僞裝攻擊。

2、利用Web服務的安全缺陷

由於單點登錄基本上是基於Web服務實現的,所以也不可避免的存在Web服務的安全缺陷,如跨站腳本攻擊、越權攻擊等。

  • 風險評級:高風險
  • 安全建議
  1. 建議在不影響業務的前提下,使用HTTPS協議傳輸
  2. 嚴格校驗SSO認證過程中的用戶身份
  3. 過濾用戶傳入的參數,對特殊符號進行轉義或屏蔽。

7 越權

  • 漏洞描述

越權訪問,這類漏洞是指應用在檢查授權(Authorization)時存在紕漏,使得攻擊者在獲得低權限用戶帳號後,可以利用一些方式繞過權限檢查,訪問或者操作到原本無權訪問的高權限功能。在實際的代碼安全審查中,這類漏洞往往很難通過工具進行自動化檢測,因此在實際應用中危害很大。其與未授權訪問有一定差別。

  • 滲透測試
  1. 以超管 admin(高權限用戶) 身份登錄系統
  2. 找到一個只有超管(高權限)纔有的功能的鏈接,比如:"http://localhost/userManage/userList.do" , 顯示出所有的user,並複製此鏈接。
  3. 以普通用戶登陸進系統,在地址欄輸入: userManage/userList.do,確認是否可以查看到其所有的user
  4. 還可以測試同級別用戶的橫向越權訪問
  • 風險評級:高風險
  • 安全建議

對用戶操作進行權限校驗,防止通過修改參數進入未授權頁面及進行非法操作,建議在服務端對請求的數據和當前用戶身份做一個校驗檢查。

8 惡意鎖定問題

  • 漏洞描述

通過不斷的輸入錯誤的密碼可惡意鎖定任意賬號

  • 滲透測試

針對測試賬戶,不斷輸入錯誤的密碼,直至將其鎖定。

  • 風險評級:
  1. 鎖定賬戶之後,可繼續使用認證功能,導致可批量自動化賬戶鎖定,爲中風險。
  2. 鎖定賬戶之後,可繼續使用認證功能,但認證存在防自動化功能,爲低風險。
  • 安全建議
  1. 賬戶鎖定之後應不能繼續使用認證功能,如對請求IP進行一個限制,一段時間之後纔可以繼續嘗試認證
  2. 認證功能防自動化操作,如添加圖形驗證碼。

9 負值反衝/正負值對衝

  • 漏洞描述

應用程序未校驗訂單數據的取值範圍,交易存在負值反衝或正負值對衝

  • 滲透測試
  1. 提交訂單時攔截請求,修改訂單參數爲負數,如商品單價、數量、總價等。
  2. 提交訂單(包含多種商品)時攔截請求,修改部分商品的單價或數量,保證訂單總金額爲正數。
  • 風險評級:高風險
  • 安全建議
  1. 服務器端在生成交易訂單時,商品的價格從數據庫中取出,禁止使用客戶端發送的商品價格。
  2. 服務器端對客戶端提交的交易數據(如商品ID、商品數量、商品價格等)的取值範圍進行校驗,將商品ID和商品價格與數據庫中的數據對比校驗,商品數量爲大於零的整型數。
  3. 服務器端在生成支付訂單時,對支付訂單中影響支付金額的所有因素(比如商品ID、商品數量、商品價格、訂單編號等)進行簽名,對客戶端提交的支付訂單進行校驗。

10 業務流程跳躍

  • 漏洞描述

業務邏輯流程分步驟進行且能越過中間校驗步驟直接進行後續操作,導致中間校驗等步驟失效。

  • 滲透測試
  1. 首先完成正常的業務邏輯步驟,獲取每一個步驟的請求;
  2. 繞過中間步驟,直接訪問最後一個或幾個驗證請求,看是否可繞過。
  • 風險評級:高風險
  • 安全建議

建議在不影響業務的前提下,在Session中添加對每一步流程頁面的校驗標誌位,在新步驟頁面瀏覽過程前要檢測之前每一步的session標誌位,且要與用戶身份強綁定。

10.1 密碼修改/重置流程跳躍(特殊場景)

  • 漏洞描述

密碼修改功能常採用分步驟方式來實現,攻擊者在未知原始密碼的情況下繞過某些檢驗步驟修改用戶密碼。

  • 滲透測試
  1. 完成修改/重置密碼的正常流程,判斷驗原密碼步驟成功的標識是否可僞造
  2. 繞過檢驗原密碼等步驟,直接訪問輸入新密碼接口,輸入新密碼,修改/重置密碼。
  • 風險評級:高風險
  • 安全建議

一次性填寫校驗信息(原始密碼、新密碼等)後再提交修改/重置密碼請求

 

 

 


愛家人,愛生活,愛設計,愛編程,擁抱精彩人生!

發佈了94 篇原創文章 · 獲贊 232 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章