1. 程式人生 > 實用技巧 >業務邏輯漏洞總結

業務邏輯漏洞總結

業務邏輯漏洞總結

來自於公眾號HACK之道 原文連結:業務邏輯漏洞總結 (qq.com)

前言

在平時學習安全中常常會有涉及到sql注入xss檔案上傳命令執行等等常規的漏洞,但是在如今的環境下,結合當前功能點的作用,雖然不在owasp top10中提及到,但是往往會存在的,一般叫做邏輯漏洞

本篇文章是根據《web攻防業務安全實戰指南》一書的知識進行簡要的總結而成的筆記。

歸類

邏輯漏洞主要產生的位置

  1. 登入處

  2. 業務辦理處

  3. 驗證碼處

  4. 支付處

  5. 密碼找回處

登入處存在的邏輯漏洞

可以暴力破解使用者名稱或密碼

沒有驗證碼機制,沒有根據使用者名稱限制失敗次數,沒有根據ip限制失敗次數等等

通常思路:

  1. 直接拿密碼字典爆破某一個使用者名稱

  2. 拿固定的弱口令密碼,去跑top xxx的使用者名稱

  3. 如果只是使用者名稱限制失敗次數,可以使用思路2的方法

  4. 在存在返回提示使用者名稱錯誤或者密碼錯誤的情況下,可以分別爆使用者名稱和密碼

常見限制:

  1. 有時候會發現使用者名稱或者密碼是密文加密,這時可能是通過前端或者其他方式加密,對於簡單的來說base64編碼和md5的簽名是很好識破的,在爆破的時候可以選擇encode和hash

session沒有清空

登出後伺服器端的session內容沒有清除,因此客戶端重新帶回登出前的session,也能夠達到重新登入

通常思路:

  1. 在登出後,拿登出前的session,重新訪問需要登入的介面

業務辦理處存在的邏輯漏洞

水平越權

通常說的越權一般是修改get或者post引數,導致的檢視到他人的業務資訊,一般看訂單處,個人資訊處等位置的引數

通常思路:

  1. 拿2個賬號,修改賬號1的get或post引數給賬號2

篡改手機號

在需要手機號的簡訊驗證處,抓包修改手機號,可能做到非本賬號手機號獲取能夠編輯本賬號的驗證碼

通常思路:

  1. 抓包,檢視get或者post引數存在手機號的地方,進行修改

驗證碼處存在的邏輯漏洞

登入驗證碼未重新整理

沒有清空session中的驗證碼資訊

通常思路:

  1. 抓包多次重放,看結果是否會返回驗證碼錯誤,如沒有返回驗證碼錯誤則存在未重新整理

  2. 觀察檢驗的處理業務,如果驗證碼和使用者名稱密碼是分2次http請求校驗,則也可以爆破使用者名稱和驗證碼

手機或郵箱驗證碼可爆破

沒有對應的手機號或郵箱,但如果驗證碼純數字4,5位左右,沒有次數校驗,可以爆破

通常思路:

  1. 拿自己的手機號或郵箱先獲取驗證碼檢視驗證碼格式,之後多次提交錯誤的看是否有限制次數,沒有就爆破

手機或郵箱驗證碼回顯到客戶端

在傳送給手機或者郵箱驗證碼時,會在response包中有驗證碼,因此不需要手機和郵箱就可以獲取驗證碼

通常思路:

  1. 傳送驗證碼時抓包,看返回包

修改response包繞過判定

在輸入錯誤的驗證碼時會返回false之類的欄位,如果修改response中的falsetrue,會識別為驗證通過

通常思路:

  1. 抓包,選擇do intercept-> response to this request,放包,抓到到下一個包就是response的包,可以修改,重放

支付處存在的邏輯漏洞

修改商品編號

如果業務是通過商品編號來判斷價格的話,可能存在只修改A商品編號為B商品編號,做到以A商品的價格購買B商品

通常思路:

  1. 先準備2個商品的編號,將其中一個改為另一個

條件競爭

通過條件競爭使餘額達到負數,從而買多個商品

通常思路:

  1. 支付處,多執行緒請求付款確認,結果如果餘額為負數,則存在該漏洞

金額修改

金額直接寫在了post或者get請求中,對其進行修改達到修改了商品金額的效果

通常思路:

  1. 抓包修改金額的欄位

商品數量修改

在購買時,如果一個商品為負數,那麼它的價格則會是負數,如果購買多種商品,將其中一個設為負數,降低整體的價格

通常思路:

  1. 購物車裡選取多個商品,修改其中一個商品的數量,在購買後檢視最終的價格

通過前端限制限購商品

有些商品限購1個,但是判定是通過前端,因此可以抓包後修改數量

通常思路:

  1. 抓取限購數量內的包,抓取後修改個數,重放

充值中放棄訂單未失效

在充值中選取大額充值訂單,放棄訂單,獲得訂單號,之後充值小額訂單,拿到充值成功的介面,將訂單號修改為放棄的大額訂單,觀察是否成功

通常思路:

1. 看看充值的時候是否有訂單號欄位,如果有在成功介面修改為未支付的訂單號,觀察是否充值成功

密碼找回處的邏輯漏洞

驗證碼處的邏輯漏洞在密碼找回處存在一樣適用
修改傳送的驗證的目標為攻擊者的郵箱或手機

在找回密碼處,如果欄位帶上使用者名稱,校驗的郵箱或者手機號,將郵箱或者手機號改為自己的,如果自己的能夠收到驗證碼並重置密碼,則該漏洞存在

通常思路:

  1. 抓包,注意找回密碼流程中的郵箱號或者手機號欄位,修改其為自己即可

session覆蓋

已知A的手機號,不知B的手機號,找回A的密碼,輸入驗證碼後到了設定新密碼設定介面。這時在同一瀏覽器下重開視窗找回B的密碼,獲取驗證碼,重新整理A設定新密碼的頁面,如果此時修改的是B賬號的密碼,則存在漏洞

通常思路:

  1. 準備2個賬號,測試步驟如上所述

  2. 在郵箱收到找回密碼連線時,依然可以使用該思路

弱token爆破

有些時候通過找回密碼的時候填郵箱,郵箱此時會收到一個帶有token的連結,點選連結就能跳轉到重置密碼的頁面,如果token是base64時間戳位數較低的隨機數則可以爆破

通常思路:

  1. 正常找回流程獲取重置密碼的url,瞭解token的規則後,爆破其他郵箱的重置密碼url

密碼找回流程繞過

在找回密碼處,一般會有三個步驟頁面,頁面1找回使用者的填寫,頁面2找回時的手機號簡訊驗證碼填寫,頁面3填寫新密碼,如果填好頁面1,直接訪問頁面3能夠重設密碼的話,則會存在該漏洞

通常思路:

  1. 在設定好找回使用者後,直接訪問重設密碼的url頁面

文章已於2020-12-04修改